在javascript中将时间转换为客户端本地时间[重复]

Posted

技术标签:

【中文标题】在javascript中将时间转换为客户端本地时间[重复]【英文标题】:Convert time to client local time in javascript [duplicate] 【发布时间】:2019-09-17 19:14:41 【问题描述】:

如果我现在有时间使用 UTC。来自后端的 json 格式,例如:

cache_time: "2019-04-29 06:12:06"

例如。一些用户会在另一个国家或城市打开页面。我如何使用 javascript 将其转换为该用户时间?

【问题讨论】:

嗨,到目前为止,您尝试了什么? 【参考方案1】:

带有“2019-04-29 06:12:06”的字符串不表示时区。如果您在末尾添加一个“Z”,则内置的 Date 函数会理解为 UTC 时间。

const cache_time = "2019-04-29 06:12:06";

const date = new Date ( cache_time + "Z" );
console.log("UTC TIME", date.toISOString())
console.log("LOCAL TIME", date.toLocaleString() );

【讨论】:

@SyedMehtabHassan 无需调用Date.parse,因为Date 将解析参数,因为它是一个字符串。 对不起,我只是想编辑我的答案并错误地编辑了你的答案 @SyedMehtabHassan 好的 :) 编辑愉快!【参考方案2】:

使用 Moment.js 库:

date = new Date("2019-04-29 06:12:06Z");

var withoutUTC = moment(date).toString();
var withUTC = moment.utc(date).toString();
console.log(withoutUTC)
console.log(withUTC)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>

【讨论】:

这意味着这个日期 2019-04-29 06:12:06 所以当我的计算机上的时间是 06:12:06 时,我的时间是 03:12:06 对吗? 不,这给出了用户时区的日期和时间。在时间戳的末尾添加一个“Z”,Date 将理解它是 UTC 并将其显示在用户时区中。 Why does Date.parse give incorrect results? @user3348410 你期望什么输出? 我明白:这让我与 UTC 时间和我的本地时间有所不同。所以 +03.00 小时。一切都很好。但是我怎么能像 2019-04-29 '这里显示这个差异时间的总和' 例如:如果 UTC 是 12:00 和差异 3 小时我会显示它像:2019-04-29 15:00【参考方案3】:

使用 moment.js 将 utc 转换为本地时间。在您的情况下: moment().utc("2019-04-29 06:12:06").local().format()

【讨论】:

它给了我“2019-04-29T18:40:24+03:00”这样的东西。我不明白这是什么意思 你传递给 moment 的日期时间对象是什么?【参考方案4】:

或者您可以使用 spacetime.js,它基于 moment.js 并且还考虑了时区。 const localTimeDate = spacetime().now().format();

【讨论】:

以上是关于在javascript中将时间转换为客户端本地时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将 UTC 日期转换为本地时间

在 Rails 中将本地时间转换为 UTC

在客户端 JavaScript 中将 WAV 转换为任何压缩音频格式

在javascript中将树从db格式转换为json格式

如何在 SAP SQL Anywhere 中将 UTC 时间戳转换为命名时区?

在 Rails 3 中将 UTC 转换为本地时间