我使用moment.js将长/纪元时间转换为人性化可读格式:
function convertValue(x) {
var mytime = x; // x = 1460554200000000
mytime = moment.utc(mytime).utcOffset(moment().format('ZZ'));
mytime = mytime.format('DD-MM-YY HH:mm:ss.SSS');
mytime = mytime + ' (' + moment().format('[UTC]ZZ') + ')';
return myTime;
}
哪个myTime
会返回如下内容:14-05-16 15:55:05.000(UTC + 100)
我怎么能做相反的事情,所以,如果我要收到类似的东西:29-01-16 14:35:05.000(UTC + 100)并转换回一个纪元时间?
答案 0 :(得分:1)
对于给定的moment
对象,如果您希望结果为字符串:
.format('x')
作为时间戳(以毫秒为单位).format('X')
作为时间戳,以秒为单位但是,如果您希望结果为数字:
.valueOf()
作为时间戳(以毫秒为单位).unix()
作为时间戳,以秒为单位但是,关于您提供的代码:
偏移UTC+100
是非标准的,有些含糊不清。它可以是UTC+10
,UTC+10:00
,UTC+0100
或UTC+01:00
。
DD-MM-YY
可能会让用户感到困惑,因为它使用两位数年份,并且与通常预期的顺序相反。如果您打算让很多人使用YYYY-MM-DD
,或者如果您想要某些特定于语言环境的内容,请使用/
,请确保您使用的是常用的分隔符现场。通常为.
或var mytime = moment(x).format('YYYY-MM-DD HH:mm:ss.SSS [UTC]ZZ');
您将使用当前偏移量给出的时间戳配对,而不是在给定时间生效的偏移量。在夏令时和其他时区变化的时区偏移发生变化的许多地方,这将会失败。
您的代码应该是:
var x = moment(mytime, 'YYYY-MM-DD HH:mm:ss.SSS [UTC]ZZ').valueOf();
要以特定格式从字符串创建时刻对象,只需在解析时提供该格式。因此,反向功能将是:
$query = $this->db->get_where('checklist_items', array('checklist_id' => $checklist_id, 'parent_id' => $parent_id));