输入:我有一个日期字符串:"2018-11-30T01:00:00+11:00"
用例:我需要使用纯js或任何库将其转换为Date对象。
结果:我应该收到一个日期对象,其日期部分为"2018-11-30"
,时间部分为"1:00"
。
请帮助。我尝试了所有解决方案,但时间总是在变化以匹配我的机器的时区。我既不想这种行为,也不想在后端进行复杂的时间转换。
答案 0 :(得分:0)
这是我为实际解决此问题的解决方案。
使用的库:带有普通javascript Date类的momentjs。
步骤1。
将String日期转换为时刻对象(PS:只要不调用toDate()
方法,时刻就会保留原始日期和时间):
const dateMoment = getMomentFromIsoString(date);
第2步。
从先前创建的矩对象中提取hours
和minutes
值:
const hours = dateMoment.hours();
const mins = dateMoment.minutes();
第3步。 将时刻转换为日期(PS:这将根据您的浏览器/机器的时区来更改原始日期,但请不要担心,请阅读第4步。)
const dateObj = dateMoment.toDate();
第4步。 手动设置步骤2中提取的小时和分钟。
dateObj.setHours(hours);
dateObj.setMinutes(mins);
第5步。
dateObj
现在将显示原始日期,没有任何时区差异。因为我们手动设置原始的小时和分钟,所以即使是夏令时更改也不会对日期对象产生任何影响。
希望这会有所帮助。