获得一年日期给予串

问题描述:

我有这样的日期格式获得一年日期给予串

2015年1月1日

我怎样才能获得年度“2015”从字符串“2015年1月1日“?

到目前为止,我想这

var str = "Jan 1, 2015"; 
var res = str.substr(1, 7); 

但遗憾的是并没有黯然工作。任何帮助,想法,线索请吗?

这可能是最安全的解决方案:

new Date('Jan 1, 2015').getFullYear(); // 2015 
+2

说实话,迄今为止,这是唯一正确的解决方案。 – Cerbrus

+1

不是**不安全。日期不是标准格式。 –

+0

@SalmanA:它确实可行 – Cerbrus

可以爆炸串,分隔符:

var res = +'Jan 1, 2015'.split(',')[1]; 

substr

var res = +'Jan 1, 2015'.substr(7), 
    res = +'Jan 1, 2015'.substr(-4); 
+0

我会'''''7'上去,似乎更安全。 – Cerbrus

+0

我写了'7'来指出'substr'的​​工作原理。 – hsz

+0

不客气,这不是一个解释。这显示了它的功能。 – Cerbrus

如果字符串总是在格式,这是一个选项:

var str = "Jan 1, 2015"; 
 
var year = parseInt(str.split(', ').pop()); 
 
alert(year)

str.split(', ')拆分串成这样的阵列:["Jan 1", "2015"]
然后,.pop返回最后一个值,"2015",和parseInt明显解析,作为一个整数。

var data = 'Jan 1, 2015'; 
var data1 = data.split(' '); 
alert(data1[2]); 

拆分值然后得到最后一个。 在您的例子分割空间和获得最后指数是2

你也可以使用pop()方法

data1.pop()

+0

请解释投票 – guradio

所有其他解决方案只是操纵字符串。但是,如果它确实是一个日期:

var year = new Date("Jan 1, 2015").getFullYear(); 
//year = 2015 
+0

不需要'Date.parse'。 'Date'构造函数的工作方式与'Date.parse'类似。 (不是downvoter) – VisioN

+0

现在它被编辑了,它只是VisionN的答案的重复。 – Cerbrus

你可以使用JavaScript日期格式:

var date = new Date(str); 
var year = date.getFullYear(); 

欲了解更多的相关信息看 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

+0

请勿使用w3schools作为参考,请改用[mdn](https://developer.mozilla.org/en-US/docs/Web/JavaScript)。此答案也是VisioN的副本 – Cerbrus

+0

为什么我应该使用mdn? –

+0

更准确,完整的文档。 w3schools在这方面极其缺乏,更不用说他们正在努力使它看起来像他们与W3C的附属,而他们不是。 – Cerbrus

或者你可以使用一个最复杂办法 !

O O 
    ° 
    \O/ 
  • 它仅对日期从年0〜3999。
    Feb 31, 2015是一个有效的字符串不是有效日期

var reg = /^([JFMASON][abceglnoprtuv]{2}) ([1-9]|[12][0-9]|[3][01]), ([0-9]|[12][0-9]|[123]?[0-9][0-9]{2})$/; 
 

 
var r; 
 
document.write('<br> :' + ((r = 'Feb 31, 2015'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 3015'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 2015'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 1995'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 115'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 15'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 5'.match(reg)) ? r[3] : 'not valid')); 
 
document.write('<br> :' + ((r = 'Jan 31, 0'.match(reg)) ? r[3] : 'not valid')); 
 

 
document.write('<br> :' + ((r = 'Jan 31, 4000'.match(reg)) ? r[3] : 'not valid'));

+0

用'[abceglnoprtuv]'替换:'[anebarprayunulugepctov]'。在chartacter类中不需要重复。 – Cerbrus

+0

@Cerbrus是的,我忘记了!完成! – Anonymous0day

+0

好多了! :d – Cerbrus

您也可以使用 VAR时间戳= Date.parse( “2015年1月1日”); console.log(timestamp); // 1420052400000 并转换任何类型的日期参数