【问题标题】:Javascript Date utcoffset and adding minutesJavascript Date utcoffset 并添加分钟
【发布时间】:2014-03-29 22:01:40
【问题描述】:

我在这里做错了什么? 在我将当前时间输入为 userPickedTime 后,我无法使其与当前 UTC 时间相匹配。

userPickedTime = new Date();
userPickedTime.setHours(3,30,0);
userTimeChoiceConvertedToUtc  = new Date (userPickedTime.getTime() + 
    (3600000*userPickedTime.getTimezoneOffset()));

【问题讨论】:

    标签: javascript date timezone


    【解决方案1】:

    timezoneOffset 在几分钟内,你应该这样做:

    userTimeChoiceConvertedToUtc  = new Date (userPickedTime.getTime() + 
    (userPickedTime.getTimezoneOffset() * 60000));
    

    【讨论】:

      【解决方案2】:

      虽然 Raul 正确地表示偏移量以分钟为单位并且您使用了错误的乘数,但您确实不应该将偏移量添加到时间戳。结果将是完全不同的时间点。

      时间戳已经以 UTC 表示,Date 对象构造函数期望您从纪元开始以毫秒为单位传递,同样以 UTC 表示。

      您应该只使用getUTC... 函数、toUTCStringtoISOString 函数。

      如果您需要更具体的 UTC 值格式,请考虑使用 moment.js 库。

      【讨论】:

      • 你是什么意思它完全指向不同的时间点?感谢您的宝贵时间。
      • Date 对象包含一个数字时间戳,即自 1970 年 1 月 1 日 UTC 以来的毫秒数。它总是在 UTC 中。因此,如果您向其中添加一个数字,您将代表 UTC 时间线上的一个不同时间点。您创建的 Date 对象仍将与本地时区相关联,只是在移动的时间点。当您接近夏令时转换时,这将导致不正确的结果。
      • 非常感谢您的解释。我不得不重读几次才能得到它。问你怎么写会不会太过分了?我不明白如何使用 toUTCString 或 toISOString 来得出结果。
      • 我将其标记为正确,因为我希望我和 Raul 学到了一些新东西。
      • 嗯,你想要的结果是什么?在您的问题中,您最终会得到一个 Date 对象。换句话说,你对日期对象做什么?如果您希望它以 UTC 格式输出为字符串,您需要什么格式?或者你是否将它传递给其他东西,如果是这样 - 什么?
      猜你喜欢
      • 2023-04-02
      • 2019-04-19
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      相关资源
      最近更新 更多