【问题标题】:Parse JavaScript Date in local time zone在本地时区解析 JavaScript 日期
【发布时间】:2013-11-29 10:59:41
【问题描述】:

我正在尝试解析datetime-local 输入的值,因此格式为'yyyy-mm-ddTHH:mm'。我希望假设我在用户的本地时区进行解析,即如果他们输入 09:00 他们意味着上午 9 点在他们的时区。

也不只是当前的时间偏移,例如如果用户输入 6 月的日期,那么他们的意思是夏令时,不管现在是 11 月并且 DST 已经结束。

我尝试过使用常规 Date 对象和 moment.js,但假设始终是时区是 UTC。

有没有办法做到这一点?

【问题讨论】:

    标签: javascript date datetime timezone


    【解决方案1】:
    // dateString is the value from datetime-local
    var dateInLocal = moment(dateString, "YYYY-MM-DDThh:mm");
    

    【讨论】:

    • 代码 moment('2013-06-30T08:00', "yyyy-MM-DDThh:mm").toISOString() 在我的语言环境(欧洲/伦敦)中运行时应返回 "2013-06-30T09:00:00.000Z"(UTC 时间上午 9 点),因为 6 月 30 日是 DST,但它返回 "2013-06-30T08:00:00.000Z"(UTC 时间上午 8 点)。大概是因为今天不是夏令时。
    • …我可能应该指定我在 Chrome Canary 中得到了该结果——我没有检查其他浏览器中的行为是否不同。
    • 好的,只是为了让我在 Chrome Canary 的开发工具中得到的结果更加奇怪,但你的 jsfiddle 工作正常。不知道那里发生了什么。
    • 适用于常规 Chrome 的开发工具,但不适用于 Chrome Canary(同一台机器)。 moment('2013-06-30T08:00', "yyyy-MM-DDThh:mm").toString() 在 Canary 中生成 "Sun Jun 30 2013 08:00:00 GMT+0000",在常规 Chrome 中生成 "Sun Jun 30 2013 08:00:00 GMT+0100"(后者正是我想要的)。
    • @RobFletcher 如果您的问题仍然存在,您为什么将此标记为答案?我有同样的问题,也只在 Chrome 中。你有什么收获吗?
    猜你喜欢
    • 2016-02-27
    • 2020-02-05
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2021-06-29
    相关资源
    最近更新 更多