在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中将时间转换为客户端本地时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在客户端 JavaScript 中将 WAV 转换为任何压缩音频格式