在Javascript中解析日期时指定日期格式

时间:2014-04-07 04:21:10

标签: javascript jquery

我想解析7Apr2014

大多数自定义解析解决方案建议使用正则表达式或其他一些黑客进行字符串操作。

在Java中,我可以这样做:

new SimpleDateFormat("ddMMMyyyy").parse("07Apr2014")

在Javascript中无法做到这一点吗?

3 个答案:

答案 0 :(得分:0)

不是真的,有一个Date.parse函数,但它依赖于实现,因此不可靠。最好的办法是手动解析日期或使用日期解析器库,如datejs。

<script language="Javascript" src="date.js" type="text/javascript" />
console.log(Date.parseExact ('07Apr2014', 'ddMMMyyyy'))

打印:

Date {Mon Apr 07 2014 00:00:00 GMT+0530 (IST)}

答案 1 :(得分:0)

function parseDate(s) {

    var months = [ "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec" ];

    var monthStarts;
    var yearStarts;

    for (var i=1; i<s.length; i++) {

        var currentCharIsNumb = !isNaN(parseInt(s[i]));
        var previousCharWasNumb = !isNaN(parseInt(s[i -1]));

        if (!currentCharIsNumb && previousCharWasNumb)
            monthStarts = i;
        if (currentCharIsNumb && !previousCharWasNumb)
            yearStarts = i;
    }

    var day = parseInt(s.substring(0, monthStarts));

    var monthStr = s.substring(monthStarts, yearStarts);
    var month = months.indexOf(monthStr.toLowerCase().substring(0, 3));
    var year = parseInt(s.substring(yearStarts));

    return new Date(year, month, day);
}

答案 2 :(得分:0)

您的日期格式似乎不是Date.parse方法支持的格式的一部分。 正如您已经想到的那样,我们需要一些自定义实现。 这是一个您可能觉得有用/采用的博客: http://lpicquet.wordpress.com/2009/11/03/simpledateformat-in-javascript/