2016-03-28 154 views
0

我从服务器获取日期为字符串的数组,现在我只想过滤日,月和年。如何将过滤结果格式化为特定的日期格式?将日期字符串转换为Javascript中的正确日期

var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00', ...]; 

//wanted result: 2015-02-04 or 04.02.2015 
+2

如何使用'新的日期(STRING);'循环?然后,'dateObj.getMonth()','dateObj.getFullYear()'... – Rayon

+0

你可以使用这个时刻 –

回答

1

你可以转换你的什么的看起来是一个ISO日期格式是这样的:

var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00']; 

date.map(function(_d) { 
    var d = new Date(_d) 
    return d.getFullYear() + '-' + d.getMonth() + 1 + '-' + d.getDay() 
} 

// if you want to get fancy, you could throw in this function to pad the days and months: 
var pad = function (n) {return n<10? '0'+n:''+n;} 

var sorted = date.map(function(_d) { 
    var d = new Date(_d) 
    return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDay()) 
}) 
console.log(sorted); 
+0

您可以尝试'return d.toISOString()。split('T ')[0]' – Rajesh

+0

如果我使用你的建议,这里是我所获得的:'2015-02-04'。用我的,我有'2015-02-03'。你如何处理时区部分('T23:54:00.000 + 01:00')? – cl3m

+0

它对我来说工作得很好:[JSFiddle](https://jsfiddle.net/RajeshDixit/0o1otxho/)。我尝试了几个时区,但不确定。 – Rajesh

0

如果你提到的格式是一致的,那么:

date.forEach(function(d) { 
    d = d.substring(0, 10); 
}) 
+1

在大多数情况下工作,但如果日期是'2015-2-4T23:54: 00.000 + 01:00'? – Rayon

+2

正如我所说,如果格式是一致的。如果格式不一致,那么我认为没有任何跨浏览器兼容解决方案。在将字符串转换为日期的情况下,即使'新日期'的实现也不一致。 –

1

日期可以接受字符串的参数。使用for循环遍历列表,然后为每个列表创建一个新的Date对象。

var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00'] 
var dateObjects = []; 

for (var i = 0; i<date.length; i++) { 
    d = new Date(date[i]); 
    dateObjects.push(d); 
} 

或者,在一个单行:

var dateObjects = date.map(function (datestr) {return new Date(datestr)}); 

现在,你可以发现,月,日,并通过以下方法其中之一年:

var year = dateObjects[0].getFullYear(); // Gets the year 
var month = dateObjects[0].getMonth()+1; // Gets the month (add 1 because it's zero-based) 
var day = dateObjects[0].getDate(); // Gets the day of the month 

dateObjects[0]仅仅是一个引用列表中第一个日期的例子。

那么你就可以得到你的输出字符串如

var dateStrings = dateObjects.map(function (item) { 
    return item.getFullYear()+"-"+(item.getMonth()+1)+"-"+item.getDate(); 
}) 
+1

你可以尝试'Array.map'。 'var dateObj = date.map(function(item){return new Date(item);});' – Rajesh

+0

@Rajesh感谢您指出这一点;) –

1
var date = ['2015-02-04T23:54:00.000+01:00','2015-02-04T23:54:00.000+01:00']; 
var newdateobject = []; 

$.each(date, function(key, e) { 
var a = new Date(e); 
    newdateobject.push(a.getFullYear()+'-'+(a.getMonth()+1) +'-'+a.getDate()); 
});