格式日期字符串在时刻

问题描述:

我想格式化基于时区格式日期字符串在时刻

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

“星期四2015年9月24日14:00:00 GMT-0700(PDT)”

“2015年9月24日,下午2点00分○○秒UTC-07:00”

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

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

“星期四2015年9月24日14:00:00 GMT-0700(太平洋夏令时间)“

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

+1

你有你的自我努力使第三个?你可以发布一些你的代码,看看你错过了什么,或者是否有一些错误? – Andrea

+0

我能够得到第三个使用这种格式: '“YYYY-MM-DD HH:mm:ss zZZ”' –

+0

好的,你可以发布你的代码吗?从你试过的东西开始会非常有用... – Andrea

您可以使用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>

我能够使用这个代码段

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)