我想使用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()
答案 0 :(得分:14)
我刚试过这段代码,看起来我得到了正确的UTC时间。我想我只想确认我正在做的是从moment.js
访问UTC时间的正确方法a.format("YYYY-MM-DD HH:mm:ssZ")
我发现我的应用程序中的使用模式不正确
selectedDate.utc().format(fullFormat)
应该是
moment.utc(selectedDate).format(fullFormat)
答案 1 :(得分:4)
这有效
moment(date_to_convert).utc().format("YYYY-MM-DD HH:mm:ss");
答案 2 :(得分:2)
问题是陈旧的,但我也遇到过。它可能对某人有用:
使用utcOffset()方法计算UTC时间:
selectedDate = (moment(selectedDate).add(-(moment().utcOffset()), 'm'));
并明确指定UTC:
selectedDate = moment.parseZone(selectedDate).utc().format();
答案 3 :(得分:2)
这对我有用!!
selectedDate = moment(selectedDate).add(moment(selectedDate).utcOffset(), 'm').utc().format()
答案 4 :(得分:1)
这就是您使用moment-timezone
moment.tz(localDate, localTimeZone).utc()
答案 5 :(得分:0)
从您的当地时间创建一个本地时刻对象,并将其转换为UTC,然后对其进行格式化,然后从该格式化的UTC字符串中创建一个新的UTC时刻
var localDateString = '24/04/2019';
var localDateStringFormat = 'DD/MM/YYYY';
var utcMoment = moment.utc(moment(localDateString, localDateStringFormat ).utc().format('YYYY-MM-DD HH:mm:ssZ'))
console.log(utcMoment);
<script src="https://momentjs.com/downloads/moment.js"></script>
答案 6 :(得分:0)
几个小时后,我发现了问题所在
简短答案:要将时间转换为utc,我们需要使用format()
长答案:举个例子
moment.utc(1559586600000).format('LLL')
.utc将isUTC标志设置为true。
记录日期时,d
键始终显示本地时区的时间。 (这使我们相信它无法正常工作-如您的屏幕截图所示)
但是我们需要使用.format以UTC格式获取日期/时间。
上面的代码返回June 3, 2019 6:30 PM
,这是正确的UTC时间。
答案 7 :(得分:0)
const moment = require('moment-timezone');
const dateTime='2020-12-21'
const timezone='America/Anchorage'
const dateTimeInUtc = moment(dateTime).tz(timezone).utc().format();
console.log('dateTimeInUtc',dateTimeInUtc);