正在格式化日期字符串

Reformatting date string

本文关键字:字符串 日期 格式化      更新时间:2023-09-26

如果输入像"Tue Aug 30 2011 11:47:14 GMT-0300",我希望输出像"MMM DD YYYY hh:mm"

在JavaScript中实现它的简单方法是什么?

通过JS,您可以尝试将其转换为日期对象,然后提取相关位并使用它们:

var d = new Date ("Tue Aug 30 2011 11:47:14 GMT-0300")
d.getMonth(); // gives you 7, so you need to translate that

可以使用date-js

这样的库来缓解它。正则表达式通过<<p> strong> :

/[a-zA-Z]{3} ([a-zA-Z]{3} 'd{2} 'd{4} 'd{2}:'d{2})/应该可以。

var r = "Tue Aug 30 2011 11:47:14 GMT-0300".match(/^[a-zA-Z]{3} ([a-zA-Z]{3} 'd{2} 'd{4} 'd{2}:'d{2})/);
alert(r[1]);   // gives you Aug 30 2011 11:47

检查Date.parse,它将字符串解析为UNIX时间戳,然后您可以按照自己的喜好格式化它。

如果您不介意使用库,可以使用Datejs。对于日期,您可以这样做:

new Date ("Tue Aug 30 2011 11:47:14 GMT-0300").toString('MMM dd yyyy hh:mm');

函数示例:

function parseDate(d) {
    var m_names = new Array("Jan", "Feb", "Mar", 
                    "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
                    "Oct", "Nov", "Dec");
    var curr_day = d.getDate();
    var curr_hours = d.getHours();
    var curr_minutes = d.getMinutes();
    if (curr_day < 10) {
        curr_day = '0' + curr_day;
    }
    if (curr_hours < 10) {
        curr_hours = '0' + curr_hours;
    }
    if (curr_minutes < 10) {
        curr_minutes = '0' + curr_minutes;
    }
    return ( m_names[d.getMonth()] + ' ' + curr_day + ' ' + d.getFullYear() + ' ' + curr_hours + ':' + curr_minutes);
}

alert(parseDate(new Date()));

或者查看http://blog.stevenlevithan.com/archives/date-time-format获取更通用的日期格式函数