【问题标题】:Format Date String in momentjs在momentjs中格式化日期字符串
【发布时间】:2017-03-23 02:40:33
【问题描述】:

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

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

“2015 年 9 月 24 日星期四 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”

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

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

【问题讨论】:

  • 你自己试过了吗?您可以发布一些代码以查看您缺少什么或是否有错误?
  • 我能够使用这种格式获得第三个:"YYYY-MM-DD HH:mm:ss zZZ"
  • 好的,你能发布你的代码吗?从您尝试过的开始会非常有用...
  • 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)
  • 好的,但你问“转换成任何一种都会有帮助”。但你可以在第三个转换......它回答了你自己的问题。我说的对吗?

标签: date momentjs


【解决方案1】:

您可以使用format 文档中列出的令牌,如下面的 sn-p 所示。

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

请注意,正如 moment-timezone docs 所说:

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

要提供长表单名称,您可以覆盖 moment.fn.zoneName 并使用 zz 令牌。

您可以在 sn-p 中找到为区域提供长名称的示例。

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>

【讨论】:

    【解决方案2】:

    我可以使用这个 sn-p 制作第三个

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2020-05-22
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多