Javascript 将本地时间转换为UTC时间确实有效

Javascript 将本地时间转换为UTC时间确实有效,javascript,momentjs,Javascript,Momentjs,我想使用Moment.js将本地时间转换为UTC等效时间。我相信我有正确的方法,但它不会改变时间 我在悉尼澳大利亚+11,预计UTC时间提前11小时 在对象内部,isUTC标志从false变为true,但时间不会改变,我打算使用不同的技术来实现这一点 如何实际获取此对象的当前UTC日期 转换前 var val = '18/03/2015'; var selectedDate = moment(val, 'DD/MM/YYYY'); var a = selectedDate.utc() 转换

我想使用Moment.js将本地时间转换为UTC等效时间。我相信我有正确的方法,但它不会改变时间

我在悉尼澳大利亚+11,预计UTC时间提前11小时

在对象内部,isUTC标志从false变为true,但时间不会改变,我打算使用不同的技术来实现这一点

如何实际获取此对象的当前UTC日期

转换前

var val = '18/03/2015';
var selectedDate = moment(val, 'DD/MM/YYYY');
var a = selectedDate.utc()

转换后

var val = '18/03/2015';
var selectedDate = moment(val, 'DD/MM/YYYY');
var a = selectedDate.utc()

我刚刚尝试了这段代码,似乎得到了正确的UTC时间。我想我只是想确认我所做的是从moment.js访问UTC时间的正确方法

a.format("YYYY-MM-DD HH:mm:ssZ")

我发现我的应用程序中的使用模式不正确

selectedDate.utc().format(fullFormat)
应该是的

moment.utc(selectedDate).format(fullFormat)

这个问题由来已久,但我也面对了它。它可能对某人有用:

使用utcOffset()方法计算UTC时间:

selectedDate = (moment(selectedDate).add(-(moment().utcOffset()), 'm'));
并明确指定UTC:

selectedDate = moment.parseZone(selectedDate).utc().format();
这对我有用

selectedDate = moment(selectedDate).add(moment(selectedDate).utcOffset(), 'm').utc().format()

根据本地时间创建本地时刻对象,并将其转换为UTC,然后对其进行格式化,然后根据格式化的UTC字符串创建新的UTC时刻

var localDateString='24/04/2019';
var localDateStringFormat='DD/MM/YYYY';
var utcMoment=矩.utc(矩(localDateString,localDateStringFormat).utc().format('YYYY-MM-DD HH:MM:ssZ'))
控制台日志(utcMoment)

经过几个令人沮丧的小时,我发现了问题所在

简短回答:要将时间转换为utc,我们需要使用
format()

长答案:举个例子

time.utc(1559586600000).format('LLL')

.utc将isUTC标志设置为true

记录日期时,
d
键始终以本地时区显示时间。(这让我们相信它工作不正常-如您的屏幕截图所示)

但我们需要使用.format以UTC格式获取日期/时间

上述代码返回2019年6月3日下午6:30时的正确UTC时间。

这有效

moment(date_to_convert).utc().format("YYYY-MM-DD HH:mm:ss");

这就是使用
时刻时区

moment.tz(localDate, localTimeZone).utc()

最后一段代码是正确的。看一看。为了进入utc模式,您应该创建一个新的时刻。虽然在我自己的测试中,我似乎能够在现有时刻成功调用
.utc()
,但谁知道呢。不是
矩().utc(…
,而是
矩.utc(…
),我想:)@medik是对的,你应该使用
矩.utc(datetime).格式(矩\utc\u日期\u时间\u格式)
如果selectedDate是以毫秒为单位的时间戳,则不起作用。为什么?如果需要减去偏移量,则不起作用。它适用于减法情况,因为utcOffset为此类情况返回负值。我认为我遇到了相反的问题…日期在JSON中是utc,但被解释为本地,因此我必须添加utc偏移量。一不过,我认为您确实希望使用selectedDate来确定偏移量,因为它将发生变化……这是我的代码:const correctedDateTime=m.add((矩(utcDate).utcOffset(),'m');这是否回答了您的问题?