请指教:
有没有没有正则表达式或字符串替换等的方法来转换简单的日期,例如:
Fri Jun 21 00:00:00 UTC+0100 2013
到 ISO8601
格式的日期 yy-mm-dd
?
PS:8601
只有日期,不是日期时间。
请指教:
有没有没有正则表达式或字符串替换等的方法来转换简单的日期,例如:
Fri Jun 21 00:00:00 UTC+0100 2013
到 ISO8601
格式的日期 yy-mm-dd
?
PS:8601
只有日期,不是日期时间。
使用 moment.js http://momentjs.com/
moment(new Date(), "YYYY-MM-DD HH:mm Z");
或者:
var date = moment("Fri Jun 21 00:00:00 UTC+0100 2013");
moment("Fri Jun 21 00:00:00 UTC+0100 2013", "YYYY-MM-DD HH:mm Z");
您可以以任何您想要的方式对其进行解析和格式化http://momentjs.com/docs/它也与 ISO-8601 日期兼容以进行解析。
是的 !
javascript中的日期函数。
var d = new Date("Fri Jun 21 00:00:00 UTC+0100 2013")
alert( d.getFullYear() + '-' + d.getUTCMonth() + '-' + d.getUTCDay())
2行代码:)
没有正则表达式或字符串替换?是的,假设格式是固定的,您可以使用.slice()
和/或.substr()
提取您需要的特定位并重新排列它们(除非此类方法属于您的“等等”类别):
var input = "Fri Jun 21 00:00:00 UTC+0100 2013";
var year = input.slice(-4),
month = ['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'].indexOf(input.substr(4,3))+1,
day = input.substr(8,2);
var output = year + '-' + (month<10?'0':'') + month + '-' + day;
或者您可以继续使用正则表达式替换变得愚蠢:
var output = input.replace(/^[^\s]+\s([^\s]+)\s(\d+)\s.*(\d{4})$/,function(m,p1,p2,p3) {
var month = ['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'].indexOf(p1)+1;
return p3 + '-' + (month<10?'0':'') + month + '-' + (p2.length===1?'0':'') + p2;
});
当然,您可能希望将此类代码包装在一个reformatDate()
方法中。
(对于日期字符串的“简单”重新格式化,对象Date
及其方法并不是特别有用,除非起始格式是Date.parse()
.)
为什么不尝试使用get
函数,如getDate()
,getMonth()
等。例如:
var today = new Date();
var d1 = new Date();
alert(d1);
var date = d1.getDate();
var month = d1.getMonth() + 1;
var year = d1.getFullYear();
然后按照您希望的方式配置字符串...!