gpt4 book ai didi

Javascript:需要帮助从美国中部时间(没有 DST)转换为 America/New_York with DST

转载 作者:行者123 更新时间:2023-11-30 06:12:10 29 4
gpt4 key购买 nike

我从我的 vendor 那里得到一个时间戳,它是美国中部时间但没有夏令时。我需要使用 DST(如果适用)将其转换为 America/New_York。

我尝试只使用常规 JavaScript,然后转向 Moment。我尝试了各种方法,但无法获得我期望的结果。我对几乎所有图书馆都持开放态度。我不必使用 Moment。

以下是我尝试过的众多方法中的三种。

代码片段:

console.log(sendTimeString);
let d = moment(sendTimeString, "MM/DD/YYYY h:mm:ss A");
console.log("formatted " + d.clone().tz("America/New_York").format('MM/DD/YYYY h:mm:ss A'));

产生:

2019 年 6 月 12 日上午 6:35:36

格式化为 06/12/2019 6:35:36 AM

那是同一个日期和时间。如果我在下面这样做,我现在会得到正确的答案,但一旦 DST 结束,它就会关闭。即使这行得通,也不过是黑客攻击而已。我想正确地做。

代码片段:

console.log(sendTimeString);
let d = moment(sendTimeString, "MM/DD/YYYY h:mm:ss A");
console.log("formatted " + d.clone().utcOffset(-2).format('MM/DD/YYYY h:mm:ss A'));

产生:

2019 年 6 月 12 日上午 6:35:36

格式化为 06/12/2019 8:35:36 AM

在我看来,这样做的方法是将时间设置为具有硬编码偏移量 -6 的 UTC。然后我会把它与 America/New_York 时区拉起来,一切都会很完美。但显然我没有正确设置:

代码片段:

console.log(sendTimeString);
let d = moment(sendTimeString, "MM/DD/YYYY h:mm:ss A").utcOffset(-6);
console.log("formatted " + d.clone().tz("America/New_York").format('MM/DD/YYYY h:mm:ss A'));

产生:

2019 年 6 月 12 日上午 6:35:36

格式化为 06/12/2019 6:35:36 AM

最佳答案

您的第一次尝试似乎最接近您的预期,您只需指定输入时区即可。

// Take the input from the client, specify the format and their timezone
const input = moment.tz('6/12/2019 6:35:36 AM', 'MM/DD/YYYY h:mm:ss A', 'US/Central')

console.log(input.tz())
console.log(input.format('MM/DD/YYYY h:mm:ss A'))

// Convert to your timezone
const output = input.clone().tz('America/New_York')

console.log(output.tz())
console.log(output.format('MM/DD/YYYY h:mm:ss A'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.26/moment-timezone-with-data.min.js"></script>

关于 parsing ambiguity 的 Moment Timezone 文档可能会解决您对 DST 的担忧。

关于Javascript:需要帮助从美国中部时间(没有 DST)转换为 America/New_York with DST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58226089/

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