在momentjs中格式化日期字符串

时间:2016-11-09 10:10:06

标签: date momentjs

我正在尝试格式化基于时区的

如何将JS时间转换为这些格式?

  

" Thu Sep 24 2015 14:00:00 GMT-0700(PDT)"

     

" 2015年9月24日,下午2:00:00 UTC-07:00"

     

" 2015-09-24 14:00:00 GMT-0700"

     

" 2015年9月24日14:00:00 GMT-0700"

     

" Thu Sep 24 2015 14:00:00 GMT-0700(Pacific Daylight Time)"

转换成任何一个都会有所帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用format文档中列出的令牌,如以下代码段所示。

使用方括号[]添加应该转义的字符(示例中为GMTUTC,如果您需要当前区域缩写,请使用z令牌。

请注意,moment-timezone docs表示:

  

Moment.js还为长格式时区名称提供了一个钩子。由于这些字符串通常是本地化的,因此Moment Timezone不会为区域提供任何长名称。

     

要提供长文字名称,您可以覆盖moment.fn.zoneName并使用zz代币。

您可以在代码段中找到为区域提供长名称的示例。

var time = "2016-11-09 15:38:00", zone = "America/Chicago";

var m = moment.tz(time,zone);

console.log(m.format('ddd MMM D YYYY HH:mm:ss [GMT]ZZ (z)'));
console.log(m.format('MMMM Do YYYY, h:mm:ss a [UTC]ZZ'));
console.log(m.format('YYYY-MM-DD HH:mm:ss [GMT]ZZ'));
console.log(m.format('MMM D YYYY HH:mm:ss [GMT]ZZ'));

// Add long names for sample zones
var abbrs = {
    EST : 'Eastern Standard Time',
    EDT : 'Eastern Daylight Time',
    CST : 'Central Standard Time',
    CDT : 'Central Daylight Time',
    MST : 'Mountain Standard Time',
    MDT : 'Mountain Daylight Time',
    PST : 'Pacific Standard Time',
    PDT : 'Pacific Daylight Time',
};

moment.fn.zoneName = function () {
    var abbr = this.zoneAbbr();
    return abbrs[abbr] || abbr;
};

console.log(m.format('ddd MMM D YYYY HH:mm:ss [GMT]ZZ (zz)'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.7/moment-timezone-with-data-2010-2020.min.js"></script>

答案 1 :(得分:1)

我能够使用此代码段制作第三个

var time = "2016-11-09 15:38:00", 
    zone = "America/Chicago", 
    format = "YYYY-MM-DD HH:mm:ss zZZ"; 

moment.tz(time,zone).utc().format(format)