Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
忽略时区偏移的Javascript日期时间字符串(实验)_Javascript_Angularjs_Datetime_Timezone_Momentjs - Fatal编程技术网

忽略时区偏移的Javascript日期时间字符串(实验)

忽略时区偏移的Javascript日期时间字符串(实验),javascript,angularjs,datetime,timezone,momentjs,Javascript,Angularjs,Datetime,Timezone,Momentjs,我最糟糕的梦魇是日期对象,所以我创建了一个提琴来看看它是如何工作的,并尝试用以下格式找到日期字符串的解决方案2015-10-05T11:49:13.587Z,但要注意当前时区 基本上,我希望能够编写newdate()(或类似)并获得2015-10-05T09:49:13.587Z,而不是2015-10-05T11:49:13.587Z 似乎显示正确日期/时间的唯一方法是: 矩().format() newdate().toLocaleString() moment().toLocaleStri

我最糟糕的梦魇是日期对象,所以我创建了一个提琴来看看它是如何工作的,并尝试用以下格式找到日期字符串的解决方案
2015-10-05T11:49:13.587Z
,但要注意当前时区

基本上,我希望能够编写
newdate()
(或类似)并获得
2015-10-05T09:49:13.587Z
,而不是
2015-10-05T11:49:13.587Z

似乎显示正确日期/时间的唯一方法是:

  • 矩().format()
  • newdate().toLocaleString()
  • moment().toLocaleString()
  • 矩().format().toLocaleString()
但是没有一个像我想要的那样返回日期对象。那正确的处理方法是什么呢

请检查我的测试:


此格式-
2015-10-05T11:49:13.587Z
-是或格式中日期和时间的标准表示形式之一

时区将不会以这种格式显示,因为这种格式本身的用途是(如维基百科文章所述):

日期和时间的表示是一项国际标准 涵盖日期和时间相关数据的交换


但我们可以明确地显示该格式中的日期以及当前时区的偏移量,但它违背了“标准”格式本身的目的。

此格式-
2015-10-05T11:49:13.587Z
-是该格式中日期和时间的标准表示形式之一

时区将不会以这种格式显示,因为这种格式本身的用途是(如维基百科文章所述):

日期和时间的表示是一项国际标准 涵盖日期和时间相关数据的交换


但是我们可以明确地以该格式显示日期以及当前时区的偏移量,但是它违背了“标准”格式本身的目的。

您要求它生成不准确的时间。您要查找的格式表示UTC时间。我建议你重新考虑一下你的要求,因为可能有缺陷
但如果这正是你想要的,你会说:

moment().format(“YYYY-MM-DDThh:MM:ss.SSSS”)+“Z”
您要求它生成不准确的时间。您要查找的格式表示UTC时间。我建议你重新考虑一下你的要求,因为可能有缺陷
但如果这正是你想要的,你会说:
moment().format(“YYYY-MM-DDThh:MM:ss.SSSS”)+“Z”

基本上,我希望能够编写
newdate()
(或类似)并获得
2015-10-05T09:49:13.587Z
,而不是
2015-10-05T11:49:13.587Z

你要求的价值是提前两小时。以这种方式转换它是无效的

我认为你混淆了两件截然不同的事情:

  • UTC不是一种格式。这是一种计时系统。当我们说“以UTC为单位”时,我们的意思是时间值以世界时表示——世界时在地球上都是一样的,与格林威治标准时间(英国格林威治标准时间,不考虑夏令时)大致相同。如果您的当地时间比UTC晚两个小时,则UTC比您的当地时间早两个小时

  • ISO-8601格式是日期和时间的字符串表示形式。有几种形式,您所表达的是时间戳的扩展格式。换句话说,它表示事件发生的实际瞬间,包括日期、时间以及与UTC的关系

    在这种格式中,
    Z
    特别表示“此处显示的值已经是UTC的值”。这与使用
    +00:00
    大致相同

因此,如果UTC中作为ISO8601字符串的值为
2015-10-05T11:49:13.587Z
,则相应的本地值(假设UTC-2如您所述)为
2015-10-05T09:49:13.587-02:00
。这仍然是ISO8601格式,但不再是UTC格式

最简单的方法是使用moment.js,使用
moment().format()

基本上,我希望能够编写
newdate()
(或类似)并获得
2015-10-05T09:49:13.587Z
,而不是
2015-10-05T11:49:13.587Z

你要求的价值是提前两小时。以这种方式转换它是无效的

我认为你混淆了两件截然不同的事情:

  • UTC不是一种格式。这是一种计时系统。当我们说“以UTC为单位”时,我们的意思是时间值以世界时表示——世界时在地球上都是一样的,与格林威治标准时间(英国格林威治标准时间,不考虑夏令时)大致相同。如果您的当地时间比UTC晚两个小时,则UTC比您的当地时间早两个小时

  • ISO-8601格式是日期和时间的字符串表示形式。有几种形式,您所表达的是时间戳的扩展格式。换句话说,它表示事件发生的实际瞬间,包括日期、时间以及与UTC的关系

    在这种格式中,
    Z
    特别表示“此处显示的值已经是UTC的值”。这与使用
    +00:00
    大致相同

因此,如果UTC中作为ISO8601字符串的值为
2015-10-05T11:49:13.587Z
,则相应的本地值(假设UTC-2如您所述)为
2015-10-05T09:49:13.587-02:00
。这仍然是ISO8601格式,但不再是UTC格式


最简单的方法是使用moment.js,使用
moment().format()

处理什么?你还没有确定你想要或试图做什么,或者你的具体问题是什么