Javascript日期格式化Fri Jun 21 00:00:00 UTC + 0100 2013 to iso 8601(2013-06-21)

时间:2013-06-04 13:14:35

标签: javascript

请告知:

是否有一种方法没有正则表达式或字符串替换等等来转换一个简单的日期,例如:

Fri Jun 21 00:00:00 UTC+0100 2013

到ISO 8601格式化日期yy-mm-dd

PS:8601仅限日期,而非日期时间。

4 个答案:

答案 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行代码:)

此处有更多信息:http://www.w3schools.com/jsref/jsref_obj_date.asp

答案 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();

然后按照您希望的方式配置字符串......!