gpt4 book ai didi

javascript - 存储日期,就好像它们是在特定时区输入的一样

转载 作者:行者123 更新时间:2023-12-03 00:39:46 24 4
gpt4 key购买 nike

我正在使用时刻。我需要用户输入一个日期,并确保这始终是澳大利亚/珀斯的时间,无论浏览器设置为何。例如,假设计算机设置为悉尼时间(现在为 +3,但在冬天为 +2)。我希望用户输入日期/时间,并确保该日期/时间存储为珀斯的时间。

请注意,可视化正确的日期不是问题(使用 moment.tz)。我担心的是日期对象的创建,这需要提供时间,并迫使浏览器假装它们位于​​该时区。

无论夏令时等如何,我都需要它工作。

更新:这就是我想要实现的目标:

// MY CURRENT TIMEZONE IS SYDNEY, CURRENTLY PERTH + 3 BUT +2 IN SUMMER
// IN PERTH IT's 10:11AM, and *THAT* is the time I am interested in
// storing, not 13:11:58
var d = new Date()
// => Wed Nov 28 2018 13:11:58 GMT+1100 (Australian Eastern Daylight Time)

// NOTE: the date 13:11:58 SYDNEY time. I don't want this.
// I MUST pretend that users entered the date with their timezone
// is in Perth
// So...

// Create a date string that exclude original timezone and includes new timezone
perthDateString = moment(new Date()).format('YYYY-MM-DDTHH:MM:ss') + '+0800'
// => "2018-11-28T13:11:58+0800"

// Make a new date object using the tinkered date string
var newD = new Date(perthDateString)

// Display the date. Note: the time is "wrong" (since it displays
// a time that is 3 hours ahead), but it's actually the correct
// answer since 'd' is meant to be Perth time in the first place
newD
// => Wed Nov 28 2018 16:11:58 GMT+1100 (Australian Eastern Daylight Time)

// Display the date as the Perth time
moment.tz(newD, 'Australia/Perth').toString()
// => "Wed Nov 28 2018 13:11:58 GMT+0800"

但是:

  • perthDateString = moment(new Date()).format('YYYY-MM-DDTHH:MM:ss') + '+0800' 中,我想指定 澳大利亚/珀斯,而不是'+0800'

  • 我对通过剪切/连接字符串来处理日期感到不安

  • 我想知道是否每个浏览器都能够解析 .format('YYYY-MM-DDTHH:MM:ss') + '+0800' 返回的日期,或者如果我我将会有惊喜 - 特别是当/如果我有一个解决方案,以便我使用澳大利亚/珀斯代替

最佳答案

如果您位于世界任何地方(例如悉尼或东京),并且本地时间为“12:30”,但您想要存储相同的时间(“12:30”),就好像您在珀斯 - 您可以使用moment-timezonemoment 一起打包.

例如,此代码段将为您提供珀斯“12:30”的时刻:

let x = moment.tz('2019-01-01T12:30:00', 'Australia/Perth')
console.log(x.format()); // Show that it is 12:30 in Perth time
console.log(new Date(x)); // Generate Date for that time
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data.js"></script>

关于javascript - 存储日期,就好像它们是在特定时区输入的一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53510535/

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