- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从我的 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/
尝试解析带有详细时区的日期: var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); sdf.parse("2022-09-02 02:30:
我有一个从我的服务器发送的以毫秒为单位的时间戳 ( Unix time / time from Epoch ),它使用 Joda-time 并且始终使用恒定时区“America/New_York”。在
如何通过此类查询 MySQL 并在每次查询后设置 time_zone?我对于在以下代码块中放置时区命令的位置遇到一些麻烦: class MyDB { private $connection;
谁能告诉我,以下两种说法有什么区别: TimeZone.getTimeZone("America/New_York") 和 TimeZone.getTimeZone("EST") 换句话说,为什么 E
我有这段代码在 SQL 中运行良好。但是我想使用不同的时区格式,例如 'America/New_York' 而不是 'US Eastern Standard Time' SELECT TODATETI
有没有办法使用 moment.js 或 moment-timezone 设置时区始终反射(reflect)“美国/纽约”,无论用户从何处访问应用程序? 我已经尝试过此操作,但对象的时区反射(refle
这是我的代码 package main import ( "fmt" "time" ) func main() { tz := "America/New_York" loc, err
代码: console.log(start) 读取,2018 年 3 月 1 日星期四 00:00:00 GMT+0530(印度标准时间) 我想要一个新对象 start_NY ,它将读取 Thu Ma
我从我的 vendor 那里得到一个时间戳,它是美国中部时间但没有夏令时。我需要使用 DST(如果适用)将其转换为 America/New_York。 我尝试只使用常规 JavaScript,然后转向
从服务器收到的日期是 UTC 时区,我需要将其转换为特定时区,例如:America/New_York。以下是相同的代码 但是在这样做时我得到了以下错误: Moment Timezone has
我在我的表中存储 UTC 时区的日期,但我需要通过将日期从 UTC 转换为美国/纽约时区来导出 CSV 文件。 我已经尝试使用 CONVERT_TZ MySQL 函数,但它给出的是空值。 我如何仅使用
我必须使用时区“ET”(东部时间)。在Java中,没有ZoneId.of("ET")。 我应该使用哪一个来正确表示“ET”: ZoneId TIMEZONE_ET = ZoneId.of("US/Ea
异常(exception): Caused by: java.lang.IllegalArgumentException: The datetime zone id 'America/New_York
我正在使用 jboss 7.1.1。我想将时区 IST(印度)更改为 EST(纽约)。我有一个使用 java_opts 选项的解决方案。我将此代码放在 bin 文件夹中的 domain.conf 文件
我是一名优秀的程序员,十分优秀!