忽略时区偏移的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的关系
在这种格式中,
特别表示“此处显示的值已经是UTC的值”。这与使用Z
大致相同+00:00
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的关系
在这种格式中,
特别表示“此处显示的值已经是UTC的值”。这与使用Z
大致相同+00:00
2015-10-05T11:49:13.587Z
,则相应的本地值(假设UTC-2如您所述)为2015-10-05T09:49:13.587-02:00
。这仍然是ISO8601格式,但不再是UTC格式
最简单的方法是使用moment.js,使用
moment().format()
处理什么?你还没有确定你想要或试图做什么,或者你的具体问题是什么