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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我希望服务器始终在HTML中以UTC提供日期,并让客户端站点上的JavaScript将其转换为用户的本地时区。

如果我可以输出用户的地区日期格式,奖金。

提问于
用户回答回答于

似乎从世界协调时的日期开始最简单的方法是创建一个新的Date对象并使用setUTC。方法将其设置为所需的日期/时间。

然后各种toLocale,String方法将提供本地化输出。

例子:

// This would come from the server.
// Also, this whole block could probably be made into an mktime function.
// All very bare here for quick grasping.
d = new Date();
d.setUTCFullYear(2004);
d.setUTCMonth(1);
d.setUTCDate(29);
d.setUTCHours(2);
d.setUTCMinutes(45);
d.setUTCSeconds(26);

console.log(d);                        // -> Sat Feb 28 2004 23:45:26 GMT-0300 (BRT)
console.log(d.toLocaleString());       // -> Sat Feb 28 23:45:26 2004
console.log(d.toLocaleDateString());   // -> 02/28/2004
console.log(d.toLocaleTimeString());   // -> 23:45:26

用户回答回答于

对于新项目,只需使用动量js

这个问题很老,所以动量js当时并不存在,但是对于新项目,它可以大大简化类似的任务。

最好解析UTC的日期字符串如下(创建ISO-8601在服务器上兼容字符串,以在所有浏览器上获得一致的结果):

var m = moment("2013-02-08T09:30:26Z");

现在就用m在应用程序中,medi.js默认为显示操作的本地时区。有格式化日期和时间值的多种方法或者提取其中的一部分。

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

m.format('LLL') // Returns "February 8 2013 8:30 AM" on en-us

要将.js对象转换为不同的时区(即既不是本地时区也不是UTC),需要.js时区扩展.该页面也有一些例子,使用起来非常简单。

扫码关注云+社区