我们说我有以下代码:
var date = moment();
var timestamp = date.unix();
var utc_timestamp = moment.utc().unix();
我的理解是,如果你打电话给utc()。所有函数都以utc模式返回值。
在这种情况下似乎并非如此。
date = {_isAMomentObject: true, _isUTC: false, _locale: r, _d: Thu Mar 24 2016 14:51:35 GMT-0700 (PDT)}
timestamp = 1458856295
utc_timestmap = 1458856295
但是。如果我使用
moment().utc(date.toDate().toUTCString())l
值似乎是UTC。但是它使用"当前的NOW值来表示utc值和时刻值。
问题是,如何获得现有时刻的utc时间戳?
我已经查看了建议的问题,并进行了搜索,但我似乎无法找到正确的解决方案。
EDIT //
我有服务器端代码在Golang中生成时间戳。 然后通过休息将其发送到我的网络服务器。并转换为MYSQL中的DateTime字段。
当我然后使用片刻生成时间戳,并在我的数据库中查询时刻1和时刻2之间的unix_timestamp(时间戳)时,根据DST,时刻的时间戳正好提前7或8小时。
我已将DateTime字段转换为时间戳。 到目前为止还没有工作,但可能是我的代码中的另一个问题。
答案 0 :(得分:5)
Unix时间戳反映了自Unix Epoch以来的秒数。它们指的是全球时间表上的一个点。因此,所有时间戳都是UTC。没有本地时间戳这样的东西。
在本地模式下使用时,它使用JS Date
对象将Unix时间戳的值转换为本地时间。日期对象中的实际Unix时间戳编号保持不变。
在UTC模式下使用时刻时,它只显示Unix时间戳的值,而不会转换为当地时间。
在任何一种情况下,Unix时间戳值都反映了全局时间轴上的相同点。
这可能是通过在本地和UTC模式下使用相同的时间戳构建一个时刻来最好地说明的。请注意,X
格式标记表示自Unix时代以来我使用的是秒的Unix时间戳。如果将一个整数传递给默认构造函数而不指定它,它会假定您从Unix纪元开始使用毫秒的Unix时间戳。
moment('1458861314', 'X').format()
"2016-03-24T18:15:14-05:00"
上面的时间是我当地的时区。
moment.utc('1458861314', 'X').format()
"2016-03-24T23:15:14+00:00"
这次是UTC。
它们都是从相同的Unix时间戳构建的,它们都引用了全局时间轴上的相同点。