可能这个问题很简单,但我似乎找不到一种方法让 moment.js 返回以毫秒为单位的 UTC 日期时间。这是我的做法:
var date = $("#txt-date").val(),
expires = moment.utc(date);
你有任何想法,我做错了什么吗?
可能这个问题很简单,但我似乎找不到一种方法让 moment.js 返回以毫秒为单位的 UTC 日期时间。这是我的做法:
var date = $("#txt-date").val(),
expires = moment.utc(date);
你有任何想法,我做错了什么吗?
这个可以在文档中找到。使用像moment这样的库,我建议您阅读整个文档。这非常重要。
假设输入的文本是以用户的本地时间为基础输入的:
var expires = moment(date).valueOf();
如果用户被指示实际输入一个UTC日期/时间,则:
var expires = moment.utc(date).valueOf();
我使用这个方法并且它有效。ValueOf 对我无效。
moment.utc(yourDate).format()
截至: moment.js版本2.24.0
假设你有一个本地日期输入,这是将你的日期时间或时间输入转换为UTC的正确方式:
var utcStart = new moment("09:00", "HH:mm").utc();
或者在您指定日期的情况下
var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();
正如您所看到的,结果输出将以协调世界时返回:
//You can call the format() that will return your UTC date in a string
utcStart.format();
//Result : 2019-06-24T13:00:00
但是如果按照以下方式进行,它将不会转换为UTC:
var myTime = new moment.utc("09:00", "HH:mm");
你只是将输入设置为UTC时间,就好像你在表明myTime是UTC时间一样,......输出将是9:00。
这将是答案:
moment.utc(moment(localdate)).format()
localdate = '2020-01-01 12:00:00'
moment(localdate)
//Moment<2020-01-01T12:00:00+08:00>
moment.utc(moment(localdate)).format()
//2020-01-01T04:00:00Z
moment.utc(date).format(...);
moment().utc(date).format(...);
行为很奇怪...
这对我有帮助,其他人也可能会发现它很有用。
let date = '2020-08-31T00:00:00Z'
moment.utc(moment(date).utc()).format() // returns 2020-08-30T22:00:00Z
var timestamp = new Date();
var inverseOffset = moment(timestamp).utcOffset() * -1;
timestamp = moment().utcOffset( inverseOffset );
timestamp.toISOString(); // This should give you the accurate UTC equivalent.
keepOffset
参数设置为 true,例如 moment(timestamp).toISOString(true)
。 - Chris Haines这段代码 moment.utc(stringDate, format).toDate()
对我来说可行。
但是这段代码 不行。moment.utc(date).toDate()
在我的情况下这个有效。
库:"moment": "^2.29.1",
moment().utc().format()
const localtime = 1622516400000
moment(localtime).utc(true).format()
.format()
,它将发出UTC值。 它不能更改内部日期值,因为Date
已经跟踪UTC时间戳。 它始终只是在其上调用的方法决定是否发出UTC或本地时间。 在这方面,Moment也是一样的。 - Matt Johnson-Pintmoment.utc(anotherMomentDate)
。 - DucDigital