Javascript Date toString转换并格式化为本地时间

时间:2017-06-28 15:11:56

标签: javascript

我有一个脚本,其格式为:

获取日期/时间
2017-06-15 21:00

然后将其转换为本地时间并显示为:

Thu Jun 15 2017 17:00:00 GMT-0400 (Eastern Daylight Time)

脚本:

$(document).ready(function() {
    $('.plg-date > .fabrikElement > div').each(function() {
        var date = $(this).text();
        var newdate = new Date(date + " UTC");
        console.log(newdate);
        $(this).text(newdate.toString());
    })
})

我如何格式化toString以便输出是这样的?

Thu Jun 15 2017 5:00:00 PM Eastern Daylight Time

3 个答案:

答案 0 :(得分:2)

您必须自己解析它。有些库可以做到这一点(Stack Overflow规则建议不要提出建议,但是如果你有Google" javascript日期格式库"有点你会找到它们),但是如果你想做的话使用纯JavaScript,你只需要自己构建字符串。

由于您已经创建了Date个对象,因此您只有一半。

Date对象只有数字,因此它不会包含ThuJunEastern Daylight Time之类的字符串。对于那些,您需要列出可能的值并将数字映射到它们(通常一个简单的数组将起作用)。

对于5:00:00 PM部分,您可以将小时数(%)修改为12,然后指定AM hours < 12PM if {{ 1}}。

hours >= 12

我不会给你完整的JavaScript,因为你应该自己写一下。如果您有任何问题,请再问一个问题。

你也可以使用toLocaleString()的组合,但它不会做你需要的一切(例如,它没有做12小时的日期格式)。

答案 1 :(得分:1)

如果您可以使用外部库,我会建议使用momentjs

这一个
moment('2017-06-15 21:00').format('ddd MMM DD YYYY h:mm:ss A')
// => "Thu Jun 15 2017 9:00:00 PM"

答案 2 :(得分:0)

使用@James建议使用toLocaleString()

$(document).ready(function() {
    $('.plg-date > .fabrikElement > div').each(function() {
        if($(this).text().length > 0) {
            var date = $(this).text();
            var newdate = new Date(date + " UTC");
            var options = { 
                year: 'numeric', 
                month: 'numeric', 
                day: 'numeric',
                hour: '2-digit',
                minute: '2-digit',
                timeZoneName: 'short'
            }
            $(this).text(newdate.toLocaleString('en-US', options)); 
        }
    })
})
相关问题