gpt4 book ai didi

javascript - 你如何在Javascript中检查日期是否为UTC?

转载 作者:行者123 更新时间:2023-12-04 01:53:44 26 4
gpt4 key购买 nike

我读过这个问题: How do you convert a JavaScript date to UTC?

基于此,我在 dateTools 模块中实现了这种转换,如下所示:

[更新]

var dt, utcTime;
dt = new Date();
utcTime = new Date(Date.UTC(dt.getFullYear(),
dt.getMonth(),
dt.getDate(),
dt.getHours(),
dt.getMinutes(),
dt.getSeconds(),
dt.getMilliseconds()));

现在我想编写单元测试。我的想法是检查结果是否实际上是 UTC,但我不知道如何。

对于输入(非 UTC)和输出 (UTC) 日期,所有 toString、toUTCString 和类似方法似乎都是相同的。

只有 getTime 方法的结果不同。

有没有办法在 javascript 中检查日期是否为 UTC?如果没有,是否有更好的办法对此进行单元测试?

提供更多上下文:

仅将其转换为 UTC 字符串并没有多大帮助,因为在下一步中,日期会发送到 Asp.net 服务,因此会转换为如下字符串:

'/Date([time])/'

使用此代码

var aspDate = '/Date(' + date.getTime() + ')/';

最佳答案

var aspDate = '/Date(' + date.getTime() + ')/';

This输出内部UNIX epoch value (UTC) ,它代表一个时间戳。您可以使用各种 toString 方法来获得该时间戳的更详细的字符串表示:

  • .toString()使用用户时区,结果类似于 "Fri Jan 25 2013 15:20:14 GMT+0100"(至少对我而言,您可能生活在不同的时区)
  • .toUTCString()使用 UTC,结果将类似于 "Fri, 25 Jan 2013 14:20:15 GMT"
  • .toISOString()使用 UTC,并根据 ISO 格式化日期字符串:"2013-01-25T14:20:20.061Z"

那么我们如何构造我们想要的时间值(value)呢?

  • new Date()Date.now() 产生当前日期时间。无论用户的时区是什么,时间戳都只是当前时刻。
  • new Date(year, month, ...) 使用用户时区从单个值构造时间戳。如果您希望这在您的用户社区中是相同的,那您就完蛋了。即使不使用时间值而只使用日期,它也可能导致 odd off-by-one errors .
    • 您可以使用 setYear, setMonth, … 和 getYear, getMonth … 方法来设置/获取根据用户时区的现有日期的单个值。这适用于用户的输入/输出。
    • getTimezoneOffset() 允许您查询将用于所有这些的时区
  • new Date(timestring)Date.parse 不可信。如果你给他们一个没有明确时区表示的字符串,UA 可以随机行事。而且,如果您想输入格式正确的字符串,您将能够找到不接受它的浏览器(尤其是旧 IE)。
  • Date.UTC(year, month, ...) 允许您根据 UTC 时区中的值构造时间戳。这对于 UTC 字符串的输入/输出非常有用。
    • 每个 get/set 方法都有一个等效的 UTC,您也可以将其用于这些事情。

您现在可以看到,您获取用户时区值并像使用 UTC 一样使用它们的方法肯定是有缺陷的。这意味着 dtutcTime 有错误的值,尽管使用错误的输出方法可能会让它看起来正确。

关于javascript - 你如何在Javascript中检查日期是否为UTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522846/

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