为了账号安全,请及时绑定邮箱和手机立即绑定

以用户的语言环境格式和时间偏移显示日期/时间

以用户的语言环境格式和时间偏移显示日期/时间

红糖糍粑 2019-07-23 19:27:16
以用户的语言环境格式和时间偏移显示日期/时间我希望服务器始终在HTML中提供UTC日期,并在客户端站点上使用JavaScript将其转换为用户的本地时区。如果我可以用户的区域设置日期格式输出,则可以获得奖励。
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

似乎从UTC日期开始最简单的方法是创建一个新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

一些参考:


查看完整回答
反对 回复 2019-07-23
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

对于新项目,只需使用moment.js

这个问题已经过时了,所以当时并不存在moment.js,但对于新项目,它简化了很多这样的任务。

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

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

现在只需m在您的应用程序中使用,moment.js默认为本地时区进行显示操作。有许多方法可以格式化日期和时间值或提取部分

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

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

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


查看完整回答
反对 回复 2019-07-23
?
慕村9548890

TA贡献1884条经验 获得超4个赞

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

以下是整个列表:使用日期


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 372 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信