2

当您将值存储为 UTC 时,是否可以在不使用 Javascript 的情况下向用户显示当地时间?

4

3 回答 3

2

您需要服务器端了解客户端时区。典型请求中没有足够的信息来做出决定,您可以获得的最接近的是 Accept_Language 标头,它可能会给您一个线索,但几乎没有用处(尤其是如果客户端位于具有多个时区的国家/地区) .

因此,您需要用户告诉您他们的时区是什么,然后使用登录或 cookie 来存储该信息。

于 2009-05-21T16:10:15.313 回答
0

您可以在服务器端使用 vb.net、c# 或您使用的任何 .net 语言进行转换。您将不得不在某个地方转换为当地时间。

您提出了一个非常广泛的问题,没有详细信息,所以我不能推荐如何在服务器上执行此操作。

编辑

根据评论,我看到您遇到的问题是您想弄清楚没有 javascript 的用户时区是什么。我总是让用户在注册时告诉我他们的时区。

一种不完美的方法是使用 geo-ip 查找服务,它会告诉您最有可能的用户在哪里,并提供更好的粒度,然后使用语言设置。

于 2009-05-21T16:05:05.293 回答
0

认为这是您可以做的最接近的事情:

using System.Globalization;

// get the first language from request (en, fr, ru)
var primaryLanguage = Request.UserLanguages.First().Split(";").First();
// find a culture by this language
var culture = new CultureInfo(primaryLanguage);
// if the culture is neutral, try to find the specific one
if (culture.IsNeutralCulture)
    culture = CultureInfo.GetCultures(CultureTypes.SpecificCultures).FirstOrDefault(o => o.TwoLetterISOLanguageName == primaryLanguage);
// get the string from a datetime
var datetimeText = culture ? DateTime.Now.ToString(culture) : DateTime.Now.ToString();
于 2009-05-21T16:26:00.260 回答