如何将日期字符串解析为dd / mm / yyyy?

时间:2014-02-26 15:43:51

标签: javascript

我有这个字符串:

3913-12-10T20:00:00+0000

如何将其更改为dd / mm / yyyy格式?我的主要问题是我不认识这种模式。它实际上是11/11/2013,但我不知道如何提取它。

3 个答案:

答案 0 :(得分:3)

就这样做:

var d= new Date("3913-12-10T20:00:00+0000");
var newDate =  d.getDate() + '/' + d.getMonth() + '/' + d.getFullYear();

或您知道的任何其他日期格式功能。

答案 1 :(得分:2)

您从中获取此数据的服务器会为您提供错误的数据。您应该向他们报告,以便他们可以修复它。他们可能正在使用已弃用的API和/或手动构建此字符串(错误地)。

字符串 有效ISO-8601,除了年份偏移+1900,月份偏+1,白天偏-1。

因此,一种解决方案是按原样解析它,然后偏移日期对象。我个人非常喜欢moment.js库来处理JavaScript中的日期。

var dateString = '3913-12-10T20:00:00+0000',
    dateObj = moment(dateString);

dateObj.subtract({'y': 1900, 'M': 1}).add('d', 1);

console.log(dateObj.format('MM/DD/YYYY')); // 11/11/2013

或者如果您更喜欢使用原生Date个对象:

var dateString = '3913-12-10T20:00:00+0000',
    dateObj = new Date(dateString);

dateObj.setFullYear(dateObj.getFullYear() - 1900);
dateObj.setMonth(dateObj.getMonth() - 1);
dateObj.setDate(dateObj.getDate() + 1);

console.log(dateObj.toDateString()); // Mon Nov 11 2013

答案 2 :(得分:-2)

    function dateString(d, i) {

        var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

        var curr_date = d.getDate() + i;
        var sup = "";

        if (curr_date == 1 || curr_date == 21 || curr_date ==31){
           sup = "st";
        }
        else if (curr_date == 2 || curr_date == 22){
           sup = "nd";
        }
        else if (curr_date == 3 || curr_date == 23){
           sup = "rd";
        }
        else{
           sup = "th";
        }

        var curr_month = d.getMonth();
        var curr_year = d.getFullYear();

        var dateString = curr_date + sup + " " + m_names[curr_month] + " " + curr_year;

        return dateString;

    }