Javascript 获取源时区中的小时数

Javascript 获取源时区中的小时数,javascript,date,datetime,momentjs,Javascript,Date,Datetime,Momentjs,假设我有一个ISO字符串日期;JS或MomentJS中是否有任何简单的api来提取原始时区(不是本地时区,不是UTC)中的小时数: 你的例子毫无意义。对于表示时区+0200中时间“5 am”的时间戳,“原始时区中的小时”为5。因为这是时间戳表示的时间。UTC的小时数应为3,因为在时区+0200的时间是凌晨5点,UTC的时间是凌晨3点 常数tz=力矩('2020-04-01T05:00:00+02:00'); console.log(tz.hour()); console.log(tz.utc

假设我有一个ISO字符串日期;JS或MomentJS中是否有任何简单的api来提取原始时区(不是本地时区,不是UTC)中的小时数:


你的例子毫无意义。对于表示时区+0200中时间“5 am”的时间戳,“原始时区中的小时”为5。因为这是时间戳表示的时间。UTC的小时数应为3,因为在时区+0200的时间是凌晨5点,UTC的时间是凌晨3点


常数tz=力矩('2020-04-01T05:00:00+02:00');
console.log(tz.hour());
console.log(tz.utc().hour())
简短的回答是“不”

字符串被解析为一个时间值,该时间值是1970-01-01T00:00:00Z(ECMAScript历元)的偏移量,因此实际上是UTC。创建的日期实例不知道它是如何创建的,因此不可能使用日期实例从用于生成它的原始字符串中恢复任何信息

您必须自己解析字符串才能从中获取任何值(我认为库可能会有所帮助,可能会对其进行点号),例如,要获取原始小时数:

['2020-05-12T08:23:15.000+05:30',
“2020-05-12T08:23:15.000-0400”,
'2020-05-12T08:23:15.000Z'].forEach(ts=>{
让[年、月、日、小时、分钟、秒、毫秒、偏移量]=ts.match(/^\d++\d\d\d |\d\d | Z$|[+-]\d:?\d\d$/g);
console.log(
`年份:${year}
月份:${month}
日期:${day}
小时:${hour}
分钟:${minute}
第二:${second}
毫秒:${毫秒}
偏移量:${offset}
`);

});你说的“原始时区”是什么意思?字符串中指定的那个:“+02:00”我明白了,我没有理解ISODate字符串的真正含义。
//eg

2020-04-01T05:00:00+02:00 -> 7