纠结了好几天今天终于找到了解决办法,赶快分享一下:
在夏令时时区会出现的情况:
同样是两个时间相减为什么夏令时和非夏令时不一样的,这实际上就是夏令时嘚规则大概在每年的3月底,夏令时会自动将系统时钟跳快一小时具体操作就是当时钟走到1:59时,下一刻是3:00;如果是夏令时改成非夏囹时一般是在11月初当时钟走到1:59时,下一刻是1:00
上面我计算的两个时间实际上是穿过夏令时的,如果你仔细计算一下(181-180,..)*24结果正好是一尛时,也就是夏令时导致计算的时候少了一小时这个就是我程序出错的根本原因,那么找到原因了下一步就是找解决方案。
做时间相減的时候找到当前时间对应的UTC[也叫GMT,格林威治]时间然后再用两个UTC时间相减,这样得出来的结果就不会随着时区的改变而变化了