Javascript日期格式化星期五六月21 00:00:00 UTC+0100 2013到iso 8601(2013-

Javascript date formatting Fri Jun 21 00:00:00 UTC+0100 2013 to iso 8601 (2013-06-21)

本文关键字:UTC+0100 2013- 2013 8601 iso 六月 星期五 格式化 日期 Javascript      更新时间:2023-09-26

请告知:

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

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

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

PS: 8601 date only, not date time.

使用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中的date函数

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

没有正则表达式或字符串替换?是的,假设格式是固定的,您可以使用.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();

然后按您想要的方式配置字符串…!