首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在网页中将UTC时间显示为本地时间?

如何在网页中将UTC时间显示为本地时间?
EN

Stack Overflow用户
提问于 2010-05-04 18:26:05
回答 5查看 17.4K关注 0票数 16

我有一个保存UTC时间的数据库。这个时间可以在网页中显示,所以我被要求在页面中显示为当地时间,因为它可以从任何国家查看。一位同事提到了一些关于从当前线程(在服务器上)获取国家设置的事情,但我找不到任何关于这方面的细节。我想做的事情是可能的吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-04 19:15:12

如果你(和你的网站)对javascript感到满意,有一种非常简单的方法可以做到这一点。

首先,在服务器端,您需要将UTC日期/时间格式化为RFC3339格式(icalendar等协议使用的互联网时间标准)。RFC 3339的基本语法是:

代码语言:javascript
复制
YYYY-MM-DDTHH:MM:SS

所以在我所在的地方,时间会是:

代码语言:javascript
复制
2010-05-04T05:52:33

但是,如果时间不是本地时间,而是世界时,您可以在末尾添加一个Z来表示这一点。因此,在我的例子中,由于我距离格林尼治标准时间-0500小时,所以上面的时间相同:

代码语言:javascript
复制
2010-05-04T10:52:33Z

因此,首先让服务器将上面的代码输出到web页面的javascript。然后,javascript可以解析该时间戳,并输出调整到浏览器时区(由托管浏览器的计算机确定)的日期和时间。你应该记住,如果用户来自东京,并且正在访问你在西班牙的网站,他们将看到东京时间的时间戳,除非他们调整了计算机的时钟。

所以javascript应该是:

代码语言:javascript
复制
    var time_string_utc = some_server_variable; // timestamp from server
    var time_string_utc_epoch = Date.parse(time_string_utc);
    var time_utc = new Date();
    time_utc.setTime(time_string_utc_epoch);

此时,您已经将javascript date对象设置为您的UTC时间戳。对上面发生的事情进行快速解释:

第一个变量假定您已将时间戳字符串从服务器传递给该变量。

第二个变量使用Date.parse()方法将字符串转换为纪元时间戳。

第三个变量创建未设置的Date对象。

最后一行使用setTime方法,该方法根据纪元时间戳设置日期对象。

现在您有了对象,您可以根据自己的需要将其输出给用户。作为一个简单的实验,您可以使用:

代码语言:javascript
复制
document.write(time_utc);

如果你在我的时区,使用UTC时间戳:

代码语言:javascript
复制
2010-05-04T10:52:33Z

会给出:

代码语言:javascript
复制
 Tue May 04 2010 05:52:33 GMT-0500 (CST)

但是您可以使用各种javascript方法将时间格式化为更美观的格式。

不需要猜测用户的国家,甚至不需要调整您的时间戳,只要您信任用户的本地浏览器/计算机时区。

同样,简短的版本:

代码语言:javascript
复制
    var time_string_utc = some_server_variable; // UTC time from server
    var time_string_utc_epoch = Date.parse(some_server_variable);
    var time_utc = new Date();
    time_utc.setTime(time_string_utc_epoch);
    document.write(time_utc);
票数 20
EN

Stack Overflow用户

发布于 2010-05-04 19:22:15

还可以考虑阅读this thread,它更深入地介绍了如何处理跨时区的夏令时问题

票数 1
EN

Stack Overflow用户

发布于 2010-05-04 18:33:39

当然是有可能的。你只需要找到country settings来检测你的用户来自哪个国家,然后修改显示的日期以适应那个国家的time.You也可以找到另一种方法来检测用户的国家(可能是从他的ip地址)。

我确信管理这个问题的最好方法是让您的同事知道您需要更多关于项目中国家/地区设置实现的详细信息,以及如何使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2764458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档