我来自UTC +8时区,当我尝试将2014-06-04 12:51:53 +0800 / from Rails /时间戳转换为我的时区时。但这仅适用于Chrome浏览器,其他所有浏览器都无法应用UTC时区。结果始终是a few seconds ago。这是我的使用方式:

window.updateTimestamps = (elements)->
  moment.lang('mn')
  moment().tz("Asia/Ulaanbaatar").format()
  elements.each( ->
    timestamp = moment(new Date($(@).data('datetime')))
    $(@).html(timestamp.fromNow())
  )


$(document).on('ready', ->

  moment.tz.add
    zones:
      "Asia/Ulaanbaatar": [
        "7:7:32 - LMT 1905_7 7:7:32"
        "7 - ULAT 1978 7"
        "8 Mongol ULA%sT"
      ]

    rules:
      Mongol: [
        "1983 1984 3 1 7 0 0 1 S"
        "1983 1983 9 1 7 0 0 0"
        "1985 1998 2 0 8 0 0 1 S"
        "1984 1998 8 0 8 0 0 0"
        "2001 2001 3 6 8 2 0 1 S"
        "2001 2006 8 6 8 2 0 0"
        "2002 2006 2 6 8 2 0 1 S"
      ]
    links: {}

这是我要转换的HTML:
<abbr class="time-ago" data-datetime="2014-06-04 12:51:53 +0800"></abbr>

这是代码:
  timeAgos = $('abbr.time-ago')
  window.updateTimestamps(timeAgos)
  setInterval(window.updateTimestamps, 60000, timeAgos)

谢谢你的答案。我不知道?请帮我:)

最佳答案

当尝试使用您的日期初始化moment.js时,Javascript控制台会显示警告,建议使用read this bug report。您必须将日期转换为ISO格式

>>> moment("2014-06-04 12:51:53 +0800").fromNow()
"a few seconds ago"
>>> moment("2014-06-04T12:51:53+0800").fromNow()
"7 days ago"

或改用格式说明符:
>>> moment("2014-06-04 12:51:53 +0800", "YYYY-MM-DD hh:mm:ss +ZZ").fromNow()
"7 days ago"

09-26 16:01