如何从UTC字符串中获取小时和分钟?

我想将日期时间从本地时间转换为 UTC,然后将该 UTC 时间解码回我的原始本地时间。


要将本地时间转换为 UTC,我使用了下面的代码,效果很好。


const now = new Date();    

let d = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 13, 5, 0);

console.log(new Date(d).getHours(), new Date(d).getMinutes());

以上代码提供的UTC时间为+5:30,输出为18,35(18:35:00)


在这里,要将 18,35 (18:35:00) 转换回 13:05:00,我使用了以下代码


const now = new Date();

let d = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 18, 35, 0);

console.log(d.toUTCString());

上面的代码为我提供了一个字符串格式的日期,它的时间是 13:05:00,这是正确的。


现在,我想从这串日期中获取小时和分钟。


我试过添加:


new Date(d.UTCString()) 

但是,它为我提供了 18 小时和 35 分钟,而我想要 13 小时和 05 分钟。请帮我解决一下这个。谢谢你。


慕尼黑8549860
浏览 253回答 3
3回答

慕哥6287543

const now = new Date();let d = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 18, 35, 0);console.log(d.getUTCHours(), d.getUTCMinutes());

慕的地6264312

你似乎把事情复杂化了。要获取 UTC 时间,只需使用getUTC方法获取小时和分钟值。要获得 UTC 时间的等效本地时间,请使用setUTC方法设置小时和分钟值,例如// Helper to pad single digitsfunction z(n) {  return ('0' + n).slice(-2);}let d = new Date();let localTime = z(d.getHours()) + ':' + z(d.getMinutes());let utcTime = z(d.getUTCHours()) + ':' + z(d.getUTCMinutes());// Print local time for dconsole.log('Local time: ' + localTime);// Print UTC time for dconsole.log('UTC time: ' + utcTime);// Set the time using UTC time in HH:mm formatutcTime = "13:05";let [utcH, utcM] = utcTime.split(':');d.setUTCHours(utcH, utcM);console.log('At UTC ' + utcTime + ' the local time is ' + z(d.getHours()) + ':' + z(d.getMinutes()));

慕沐林林

这里是toLocaleTimeString方法const now = new Date();    let d = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 13, 5, 0);console.log('locale', new Date(d).toLocaleTimeString('ru-kz', { timeStyle: 'short' }))console.log('utc', new Date(d).getUTCHours() + ':' + new Date(d).getUTCMinutes())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript