首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在客户端显示用户时区中的日期/时间

在客户端显示用户时区中的日期/时间
EN

Stack Overflow用户
提问于 2009-12-03 01:56:48
回答 3查看 20.2K关注 0票数 8

我有一个web应用程序,它在每一页上都显示日期时间戳,例如:

2009年12月12日下午6时

我希望动态地检测用户的时区并使用JavaScript更改显示。

所以纽约的用户会看到:

2009年12月12日下午6时

而加州的用户会看到:

二零零九年十二月十二日下午三时

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-03 02:16:58

下面是如何使用精彩的“渐进增强”来实现这一功能:

输出您希望它出现的日期,但一定要指定它的时区(我在这里使用GMT,但您可以使用UTC等)。然后将其与本地加载时间交换(如果提供了原始时区,则由JavaScript自动处理)。

代码语言:javascript
复制
<div id="timestamp">December 12, 2009 6:00 pm GMT</div>
<script type="text/javascript">
    var timestamp = document.getElementById('timestamp'),
        t         = new Date(timestamp.innerHTML),
        hours     = t.getHours(), 
        min       = t.getMinutes() + '', 
        pm        = false,
        months    = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

    if(hours > 11){
       hours = hours - 12;
       pm = true;
    }

    if(hours == 0) hours = 12;
    if(min.length == 1) min = '0' + min;

    timestamp.innerHTML = months[t.getMonth()] + ' ' + t.getDate() + ', ' + t.getFullYear() + ' ' + hours + ':' + min + ' ' + (pm ? 'pm' : 'am');
</script>
票数 2
EN

Stack Overflow用户

发布于 2009-12-03 02:06:53

您可以使用Date.getTimeZoneOffset()从格林尼治时间获取本地偏移量。

代码语言:javascript
复制
var date = new Date();
var offset = date.getTimezoneOffset();

从那里开始是SMOP。使用Javascript日期对象,您可以调用date.toDateString来获取可读的日期。如果您需要它的服务器端,让Javascript用GET或POST将偏移量发送到您的服务器。

格式化日期是另一个故事。Javascript提供的内置功能不多。你可以自己破解它,但那样的话,虫子和疯狂的谎言。任何好的Javascript库都应该提供日期格式设置。例如,JQuery有Datepicker.formatDate

票数 6
EN

Stack Overflow用户

发布于 2009-12-09 09:58:15

我们正在使用ExtJS库,它具有关于日期和时间的功能,可以帮助您很多。事实上,在我的Mozilla上,它会根据浏览器时区显示所有的日期和时间。

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

https://stackoverflow.com/questions/1837183

复制
相关文章

相似问题

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