从服务器端查找 HttpRequest 中的时区

发布于 2024-12-23 12:40:34 字数 498 浏览 2 评论 0原文

我尝试过 var dateHeaders = HttpContext.Current.Request.Headers["Date"] 但它包含 null,显然没有这样的键。

谁能告诉我还能在哪里找到当前客户的时区?

参考: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

在此处输入图像描述

我想将 dateTime 解析为以下格式:

11 月 14 日星期日 43745 00:00:00 GMT+0200(耶路撒冷标准时间)

顺便说一句,“43745”部分是什么?

I have tried var dateHeaders = HttpContext.Current.Request.Headers["Date"] but it contains null, apparently there is no such key.

Can anyone tell me where else can I find the time-zone of the current client?

Reference: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

enter image description here

I want to parse dateTime to the following format:

Sun Nov 14 43745 00:00:00 GMT+0200 (Jerusalem Standard Time)

btw, what's the '43745' part?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

琉璃繁缕 2024-12-30 12:40:34

日期标头不是在标准 http 请求中发送的标头。我刚刚使用 IE 和 Firefox 与 fiddler 进行了快速检查,但没有看到任何请求发送的日期标头。

您在服务器上可以做的最好的事情就是获取用户的文化,但这只会对日期格式有帮助,而对时区没有帮助。

但是,您可以使用 getTimezoneOffset 从 javascript 获取信息。例如:

var timeNow = new Date();
var timezone = timeNow.getTimezoneOffset() / 60 * (-1);

这里有一个很好的描述

The date header is not one that is sent in standard http requests. I just ran a quick check with fiddler using both IE and Firefox and didn't see the date header sent on any requests.

The best that you can do on the server is get the user's culture, but this will only help with the date format, not the timezone.

However, you can get the information from javascript using getTimezoneOffset. For example:

var timeNow = new Date();
var timezone = timeNow.getTimezoneOffset() / 60 * (-1);

There is an excellent description here.

自演自醉 2024-12-30 12:40:34

在客户端将其添加到请求标头中。

request.headers["X-Timezone-Offset"] = new Date().getTimezoneOffset()

在服务器端。

import moment from "moment";

const userTimezoneOffset = Number(-req.headers['x-timezone-offset'])
const date = moment(ISODateString).utcOffset(userTimezoneOffset).format("MM/DD/YYYY, h:mm a")

console.log(date)

通过此您可以将 ISO 日期字符串转换为服务器上的用户时间。

In client side add this to request header.

request.headers["X-Timezone-Offset"] = new Date().getTimezoneOffset()

In server side.

import moment from "moment";

const userTimezoneOffset = Number(-req.headers['x-timezone-offset'])
const date = moment(ISODateString).utcOffset(userTimezoneOffset).format("MM/DD/YYYY, h:mm a")

console.log(date)

By this you can convert the ISO date string to users time from server.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文