Javascript-UTC时间到本地时间的转换

Javascript-UTC时间到本地时间的转换,javascript,Javascript,关于StackOverflow,关于如何使用库实现UTC时间到Loca时间的转换,有很多类似的问题,但是没有任何东西真正解决如何使用Javascript提供的工具实现这一点 目前,我有这样一个字符串:13:05 要将其转换为UTC,我将执行以下操作: const d=new Date(),time=“13:05”; const localToUtc=新日期(`${d.getUTCMonth()}-${d.getUTCDate()}-${d.getUTCFullYear()}${time}`)

关于StackOverflow,关于如何使用库实现UTC时间到Loca时间的转换,有很多类似的问题,但是没有任何东西真正解决如何使用Javascript提供的工具实现这一点

目前,我有这样一个字符串:
13:05

要将其转换为UTC,我将执行以下操作:

const d=new Date(),time=“13:05”;
const localToUtc=新日期(`${d.getUTCMonth()}-${d.getUTCDate()}-${d.getUTCFullYear()}${time}`)
.toISOString()
.子串(11,16);

log(localToUtc)
您应该使用
Date
构造函数,该构造函数接受单独的日期和时间组件值,而不是日期字符串。这样,如果愿意,您传入的
dateString
可以有可选的秒数

请勿使用此选项:

新日期(日期字符串)

改用这个:

新日期(年、月、日、小时、分钟、秒、毫秒)

见:


实例
const localToUtc=timeStr=>{
const date=新日期()
const tokens=timeStr.split(“:”).map(t=>parseInt(t,10))
返回新日期(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
令牌[0],//小时
令牌[1],//分钟
令牌[2]| | 0//秒(可选)
)
.toISOString()
.子串(11,16)
}
const utcToLocal=timeStr=>{
const date=新日期()
const tokens=timeStr.split(“:”).map(t=>parseInt(t,10))
const result=新日期(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
令牌[0],//小时
令牌[1],//分钟
令牌[2]| | 0//秒(可选)
)
result.setMinutes(result.getMinutes()-date.getTimezoneOffset())
返回result.toString()子字符串(16,21)
}
log(`UTC时间:${localToUtc('13:05')}`);

log(`localtime:${utcToLocal('17:05')}`)这看起来很棒。我只是不知道当地的时间是怎么变的。看起来你是根据时区偏移量而不是小时来设置分钟的?@bryan时区偏移量是以分钟为单位的。