【发布时间】:2017-02-20 10:36:26
【问题描述】:
我使用bs-datepicker 将时间保存为 mongodb 中的数字。在 mongodb 中,它具有 time 字段,其值为 38700000 和 41400000,分别为 16.15 和 17.00。
现在,我想以可读的形式格式化上述时间。我正在使用moment 2.16。在这里我尝试但无法做到jsfiddle
console.log(moment.unix(38700000).format('HH:mm')) //03:30, expect:16:15
console.log(moment.unix(41400000).format('HH:mm')) //09:30, expect:17:00
还有,如何将 HH:mm 转换为数字。例如18:71 转换为数字
【问题讨论】:
-
当我运行
console.log(moment(38700000).format('HH:mm'));和console.log(moment(41400000).format('HH:mm'));时,我分别得到 10:45 和 11:30 的值。这两个距离您的目标值 5:30 分钟,所以我会确保您的时区是正确的(最好使用 UTC+0)。您可以将x作为格式参数传递,以从日期获取 unix 时间戳。 -
我还想指出,moment.unix(t) 需要一个以秒为单位的 unix 时间戳,而 moment(t) 需要一个以毫秒为单位的 unix 时间戳。
-
@SamJudge,感谢您的回复。我的时区是格林威治标准时间 +5:30,那么如何实现呢?
-
简单,在 .format() 之前使用 .local()
console.log(moment(38700000).local().format('HH:mm')):) 我看到您正在使用 mongo,所以可能发生的事情是您正在以本地时间格式上传,mongo 商店它是 UTC,当您期待当地时间时,您将获得 UTC 值。执行上述操作应该可以。
标签: javascript momentjs angular-moment