如何在JavaScript中解析此日期字符串中的年份?

Pie*_*eed 10 javascript datetime parsing

给定以下字符串格式的日期:

2010-02-02T08:00:00Z
Run Code Online (Sandbox Code Playgroud)

如何用JavaScript获得年份?

Jas*_*son 17

这是一个约会,使用Javascript内置的Date函数...

var d = new Date('2011-02-02T08:00:00Z');
alert(d.getFullYear());
Run Code Online (Sandbox Code Playgroud)

  • 请注意,浏览器支持现在非常普遍,使用Date函数是最佳实践. (2认同)

Guf*_*ffa 8

你可以简单地解析字符串:

var year = parseInt(dateString);
Run Code Online (Sandbox Code Playgroud)

解析将以破折号结束,因为它不能是整数的一部分(除了作为第一个字符).

  • 这是糟糕的抽象和临时性的。 (3认同)
  • +1,最简单的越好,使用`Date`对象只是一种矫枉过正,应该避免使用,因为ISO-8601格式没有得到广泛支持-etet-,`parseInt`可以正常工作.我也许可以使用`dateString.slice(0,4);` (2认同)

Rob*_*Dam 7

我认为正确的方法是

var year = (new Date('2010-02-02T08:00:00Z')).getFullYear();
Run Code Online (Sandbox Code Playgroud)

要么

var date = new Date('2010-02-02T08:00:00Z');
var year = date.getFullYear();
Run Code Online (Sandbox Code Playgroud)

因为它允许您在以后需要时进行其他日期操作,并且如果日期格式发生变化也会继续工作.

更新:Jason Benson指出Date会为你解析它.所以我删除了无关的Date.parse调用.

  • 对于这种情况,恕我直言的"适当"方式只是一种矫枉过正,因为ECMAScript 3中`Date`构造函数和`Date.parse`方法处理的格式是**依赖于实现的**,ISO-8601格式是最近由ECMAScript 5引入,这意味着您将找到无法解析该格式的实现.他只想要前4个字符,我只想找'dateStr.slice(0,4)`... (3认同)
  • @CMS,至少,人们应该知道有一种正式的方法,即使事实证明它在IE或任何地方都不起作用。即使没有可用的xml解析器,使用slice(或substr或split)解析日期与使用正则表达式解析xml一样糟糕。 (2认同)