首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以用户的区域设置格式和时间偏移量显示日期/时间

以用户的区域设置格式和时间偏移量显示日期/时间
EN

Stack Overflow用户
提问于 2008-09-18 00:37:12
回答 13查看 412.8K关注 0票数 181

我希望服务器始终在超文本标记语言中使用UTC格式的日期,并让客户端站点上的JavaScript将其转换为用户的本地时区。

如果我可以以用户的区域设置日期格式输出,则会获得奖励。

EN

回答 13

Stack Overflow用户

发布于 2014-05-26 22:58:26

你可以使用moment.js (2021年不推荐使用)

最好按如下方式从UTC中parse日期字符串(在服务器上创建一个与ISO-8601兼容的字符串,以便在所有浏览器上获得一致的结果):

代码语言:javascript
复制
var m = moment("2013-02-08T09:30:26Z");

现在只需在您的应用程序中使用m,moment.js默认为显示操作的本地时区。它有many ways to format the date and time values或extract部分。

您甚至可以在用户区域设置中设置moment对象的格式,如下所示:

代码语言:javascript
复制
m.format('LLL') // Returns "February 8 2013 8:30 AM" on en-us

要将moment.js对象转换为不同的时区(即既不是本地时区,也不是协调世界时),您将需要moment.js timezone extension。该页面也有一些示例,使用起来非常简单。

注意: Moment JS推荐更现代的替代方案,因此它可能不是新项目的好选择。

票数 65
EN

Stack Overflow用户

发布于 2008-09-17 16:49:24

您可以使用new Date().getTimezoneOffset()/60作为时区。还有一个toLocaleString()方法可以使用用户的语言环境显示日期。

下面是完整的列表:Working with Dates

票数 25
EN

Stack Overflow用户

发布于 2017-05-09 14:52:57

在JS中,除了如上所述的转换每个属性之外,没有简单且跨平台的方法来格式化本地日期时间。

这是我用来获取本地YYYY-MM-DD的一个快速技巧。请注意,这是一个技巧,因为最终日期将不再具有正确的时区(因此您必须忽略时区)。如果我还需要其他东西,我会使用moment.js。

代码语言:javascript
复制
var d = new Date();    
d = new Date(d.getTime() - d.getTimezoneOffset() * 60000)
var yyyymmdd = t.toISOString().slice(0,0); 
// 2017-05-09T08:24:26.581Z (but this is not UTC)

d.getTimezoneOffset()返回以分钟为单位的时区偏移量,而d.getTime()以ms为单位,因此x为60,000。

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

https://stackoverflow.com/questions/85116

复制
相关文章

相似问题

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