请告知:
是否有一种方法没有正则表达式或字符串替换等等来转换一个简单的日期,例如:
Fri Jun 21 00:00:00 UTC+0100 2013
到ISO 8601
格式化日期yy-mm-dd
?
PS:8601
仅限日期,而非日期时间。
答案 0 :(得分:5)
使用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日期兼容进行解析。
答案 1 :(得分:4)
是的!
javascript中的日期函数。
var d = new Date("Fri Jun 21 00:00:00 UTC+0100 2013")
alert( d.getFullYear() + '-' + d.getUTCMonth() + '-' + d.getUTCDay())
2行代码:)
答案 2 :(得分:3)
没有正则表达式或字符串替换?是的,假设格式已修复,您可以使用.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()
识别的格式。)
答案 3 :(得分:0)
为什么不尝试使用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();
然后按照您希望的方式配置字符串......!