Javascript日期转换字符串并格式化为本地时间

Javascript日期转换字符串并格式化为本地时间,javascript,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()

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

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

你必须自己解析它。也有一些库可以做到这一点(堆栈溢出规则建议不要提出建议,但如果你稍微搜索一下“javascript日期格式库”,你就会找到它们),但是如果你想用纯javascript实现这一点,你只需要自己构建字符串

因为您已经创建了一个
Date
对象,所以已经完成了一半

Date
对象只有数字,因此它不会包含诸如
Thu
Jun
东部夏时制等字符串。对于这些,您需要列出可能的值,并将数字映射到它们(通常一个简单的数组就可以了)

对于
5:00:00 PM
部分,您可以将(
%
)小时数修改为12,然后如果
hours<12
PM
如果
hours>=12
,则指定
AM

const time = (d.getHours() % 12) + ':' + d.getMinutes() + ':' + d.getSeconds() + (d.getHours() < 12 ? 'AM' : 'PM');
const time=(d.getHours()%12)+':'+d.getMinutes()+:'+d.getSeconds()+(d.getHours()<12?'AM':'PM');
我不会给你完整的JavaScript,因为你应该尝试自己编写。如果你有什么问题,请再问一个问题


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

您必须自己解析它。也有一些库可以做到这一点(堆栈溢出规则建议不要提出建议,但如果你稍微搜索一下“javascript日期格式库”,你就会找到它们),但是如果你想用纯javascript实现这一点,你只需要自己构建字符串

因为您已经创建了一个
Date
对象,所以已经完成了一半

Date
对象只有数字,因此它不会包含诸如
Thu
Jun
东部夏时制等字符串。对于这些,您需要列出可能的值,并将数字映射到它们(通常一个简单的数组就可以了)

对于
5:00:00 PM
部分,您可以将(
%
)小时数修改为12,然后如果
hours<12
PM
如果
hours>=12
,则指定
AM

const time = (d.getHours() % 12) + ':' + d.getMinutes() + ':' + d.getSeconds() + (d.getHours() < 12 ? 'AM' : 'PM');
const time=(d.getHours()%12)+':'+d.getMinutes()+:'+d.getSeconds()+(d.getHours()<12?'AM':'PM');
我不会给你完整的JavaScript,因为你应该尝试自己编写。如果你有什么问题,请再问一个问题


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

如果您可以使用外部库,我建议使用以下一种线性格式:


如果您可以使用外部库,我建议您使用以下命令行程序:


使用@James suggestion来使用toLocaleString()


使用@James suggestion来使用toLocaleString()


看一看,它接受的选项,以及您将undefined设置为区域设置的示例。看一看,它接受的选项,以及您将undefined设置为区域设置的示例。尽管我欣赏上面的答案,但我确实不喜欢使用插件。所以这是最合理的妥协。虽然我很欣赏上面的答案,但我真的不喜欢使用插件。所以这是最合理的妥协。
$(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)); 
        }
    })
})