繁体   English   中英

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

[英]Javascript Date toString convert and format to local time

我有一个脚本,该脚本以以下格式获取日期/时间:

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

您必须自己解析它。 有一些库也可以做到这一点(Stack Overflow规则建议不要提出建议,但是如果您使用Google“ javascript日期格式库”,会发现它们),但是如果您要使用纯JavaScript来实现,我只需要自己构建字符串即可。

由于您已经在创建Date对象,因此您已经完成了一半。

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

对于5:00:00 PM部分,可以MOD( % 12)小时,然后指定AM如果hours < 12PM如果hours >= 12

const time = (d.getHours() % 12) + ':' + d.getMinutes() + ':' + d.getSeconds() + (d.getHours() < 12 ? 'AM' : 'PM');

我不会提供完整的JavaScript,因为您应该自己动手编写脚本。 如果您有任何麻烦,请再问一个问题。

您也可以使用toLocaleString()组合,但是它不能满足您的所有需求(例如,它不执​​行12小时日期格式)。

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

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

使用@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)); 
        }
    })
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM