gpt4 book ai didi

javascript - 在特定时区格式化日期

转载 作者:IT老高 更新时间:2023-10-28 13:18:28 26 4
gpt4 key购买 nike

我正在使用 Moment.js在我的网络应用程序中解析和格式化日期。作为 JSON 对象的一部分,我的后端服务器以 UTC 纪元(Unix 偏移量)的毫秒数发送日期。

在特定时区解析日期很容易——只需在解析前将 RFC 822 时区标识符附加到字符串的末尾即可:

// response varies according to your timezone
const m1 = moment('3/11/2012 13:00').utc().format("MM/DD HH:mm")

// problem solved, always "03/11 17:00"
const m2 = moment('3/11/2012 13:00 -0400').utc().format("MM/DD HH:mm")

console.log({ m1, m2 })
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

但是如何在特定时区格式化日期?

无论浏览器的当前时间如何,我都想要一致的结果,但我不想以 UTC 显示日期。

最佳答案

正如 Manto's answer 中指出的那样, .utcOffset()是 Moment 2.9.0 的首选方法。此函数使用与 UTC 的实际偏移量,而不是反向偏移量(例如,DST 期间的纽约为 -240)。像“+0400”这样的偏移字符串的工作方式和以前一样:

// always "2013-05-23 00:55"
moment(1369266934311).utcOffset(60).format('YYYY-MM-DD HH:mm')
moment(1369266934311).utcOffset('+0100').format('YYYY-MM-DD HH:mm')

较早的 .zone() as a setter在 Moment.js 2.9.0 中被弃用。它接受包含时区标识符的字符串(例如,“-0400”或“-04:00”表示 -4 小时)或表示 UTC 分钟的数字(例如,DST 期间纽约的 240 )。

// always "2013-05-23 00:55"
moment(1369266934311).zone(-60).format('YYYY-MM-DD HH:mm')
moment(1369266934311).zone('+0100').format('YYYY-MM-DD HH:mm')

要使用命名时区而不是数字偏移量,请包括 Moment Timezone并使用 .tz() 代替:

// determines the correct offset for America/Phoenix at the given moment
// always "2013-05-22 16:55"
moment(1369266934311).tz('America/Phoenix').format('YYYY-MM-DD HH:mm')

关于javascript - 在特定时区格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15347589/

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