如何使用js将UTC日期转换为本地时间? [复制]

Posted

技术标签:

【中文标题】如何使用js将UTC日期转换为本地时间? [复制]【英文标题】:How to convert the UTC date to local time with js? [duplicate] 【发布时间】:2019-09-03 19:43:12 【问题描述】:

我想在我的页面中显示一张照片的上传日期,但我只能根据服务器时区显示日期。

假设我在 12 日 19:30 GMT-5 在家上传照片,因此服务器在 13 日 00:30 注册。

我想要的是检索用户已知的日期(12th 19:30)。

我所做的是获取客户端的时区并将该分钟数添加到对象 Date,如下所示:

upload_date = response.upl_date;//This is the date I get from server (12:30)

var d = new Date();//Here I get the current date of client...
var timezone = d.getTimezoneOffset();//...to get the timezone offset in minutes (300)

var dd = new Date(upload_date);//Here I turn my server date into an object

dd.setMinutes(dd.getMinutes() - timezone);//Substract the minutes to the hour of the object

console.log(dd);//And voilá, I get 19:30, but the day keeps being 13

尽管分钟会影响对象 Date 的小时数,但它不会影响天数,因此它一直是第 13 天而不是第 12 天。

当然,例如,在服务器端是 19:00 和客户端是 14:00 时,它可以完美运行,但是我可以做些什么来更改日期以适应时区更改?我应该尝试另一种方式吗?或者 if() 的一些技巧?

【问题讨论】:

用户上传图片时,将GTM保存到服务器。检索时检索并相应地转换为客户端时区 【参考方案1】:

希望对你有所帮助:

var options = 
  timeZone: "America/New_York", //you can use any timezone here
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric'
;

var formatter = new Intl.DateTimeFormat([], options);

var UTCTime = "2017-09-03T02:00:00Z";
var localTime = formatter.format(new Date(UTCTime));
var currentTime = formatter.format(new Date());
console.log(currentTime, localTime);

【讨论】:

@jhpratt 你说得对,这个编辑毫无意义,我已经回滚了。

以上是关于如何使用js将UTC日期转换为本地时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Sequelize将日期从UTC转换为本地

Miller 如何将本地日期和时间转换为 UTC?

如何仅使用标准库将 UTC 日期时间转换为本地日期时间?

如何将 UTC 时间转换为本地时间

如何将 UTC 日期字符串转换为本地时间 (systemTimeZone)

如何将角度 UTC 时间戳转换为本地时间戳? [复制]