gpt4 book ai didi

javascript - 使用 moment.js (时区)时以 ("YYYY-MM-DD HH:mm") 格式返回日期和时间

转载 作者:行者123 更新时间:2023-12-03 05:44:03 31 4
gpt4 key购买 nike

我正在使用时刻时区,因此我可以从选定的时区转换为客户端的时区。

我无法以比这更好的方式实现它:

convertSelectedTimeZoneToClients() {
let timeZoneInfo = {
usersTimeZone: this.$rootScope.mtz.tz.guess(),
utcOffset: this.formData.timeZone.offset,
selectedDateTime: this.toJSONLocal(this.formData.sessionDate) + " " + this.formData.sessionTime
};

let utcTime = this.$rootScope.mtz.utc(timeZoneInfo.selectedDateTime).utcOffset(timeZoneInfo.utcOffset).format("YYYY-MM-DD HH:mm");
let convertedTime = this.$rootScope.mtz.tz(utcTime, timeZoneInfo.usersTimeZone).format("Z");
return convertedTime;
}

所以基本上我使用 usersTimeZone: this.$rootScope.mtz.tz.guess(),guess() 函数从浏览器中找出时区。然后,我从日期时间选择器和下拉列表中获取值,并使用 utcOffset 将它们转换为 UTC 值。最后我想将该 utc 值转换为用户时区值。

我得到这样的对象:

enter image description here

_d表示转换后的正确值。我尝试在 ConvertedTime 变量上添加一堆不同的 .format() 模式,但我无法以这种格式检索时间:“YYYY-MM-DD HH:mm”。我想它的工作方式与使用 .utcOffset() 函数时不同。

有人可以帮我解决这个问题吗?

最佳答案

您无需猜测客户端时区即可转换为本地时间。只需使用local函数即可。

例如:

moment.tz('2016-01-01 00:00', 'America/New_York').local().format('YYYY-MM-DD HH:mm')

对于位于太平洋时区的用户,此操作会从东部时区转换为太平洋时区,并且您会得到输出字符串 “2015-12-31 21:00”。对于其他时区的用户,输出会有所不同,正如预期的那样。

您不需要格式化为字符串并重新解析它,也不需要手动操作 UTC 偏移量。这几乎是没有道理的。

关于javascript - 使用 moment.js (时区)时以 ("YYYY-MM-DD HH:mm") 格式返回日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40405057/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com