[{"insert":"我们都知道中国时区全境统一为东八区,意思相对协调世界时 UTC 早 8 个小时,在 JavaScript 中表示为 GMT+0800。但是时间不像想象的那样一直不会产生变化,试运行以下动作\n\n"},{"insert":{"image":"R10512487-2ab18a380c3d67611557a3212ef014ee_58705_747_721.png"}},{"insert":"\n\n打印结果如下图所示,可以看到时间变量1的时区为 +0805 而不是 +0800\n\n"},{"insert":{"image":"R10512487-02cc5249104237f97c1b6df209a37178_4097_368_221.png"}},{"insert":"\n\n这是因为 JavaScript 使用时区为系统时区,而大多数的系统使用的时区信息都为时区信息数据库,它记载的是地区历史上发生的时区改变。\n\n举个例子,当系统设置时区为北京,重庆,香港特别行政区,乌鲁木齐时,浏览器默认取的将会是上海时区。\n\n"},{"insert":{"image":"R10512487-e20b74446bf9983c6ebc64370c394a8c_2761_519_75.png"}},{"insert":"\n\n在 "},{"attributes":{"link":"https://www.timeanddate.com/time/zone/china/shanghai"},"insert":"https://www.timeanddate.com/time/zone/china/shanghai"},{"insert":" 查询得知上海时区在 1901 年前处于 +0805,和前面的运行结果相同\n\n"},{"insert":{"image":"R10512487-8e805347be910aaece3c3153386f9973_6097_787_127.png"}},{"insert":"\n\n除此之外,查询别的年份可以发现上海也有过使用夏令时的历史\n\n"},{"insert":{"image":"R10512487-e6952cb9a90e786e8e1549e7aaef3764_70496_810_616.png"}},{"insert":"\n\n综上所述,由于时区变化,使用本地时间来进行毫秒运算是件很麻烦的事。于是我们需要将计算的主体转移到到标准时间上。\nJavaScript 提供了一个 Date.UTC API 以获取一个标准时间时间戳,像这样\n// monthIndex 从 0 开始表示一月"},{"attributes":{"blockquote":true},"insert":"\n"},{"insert":"Date.UTC(year, monthIndex, day, hour, minute, second, millisecond)"},{"attributes":{"blockquote":true},"insert":"\n"},{"insert":"\n封装成一个动作进行调用 \n\n"},{"insert":{"image":"R10512487-e64c25c7aa78e4b000e788fe8c7cea93_11203_737_135.png"}},{"insert":"\n\n接下来便可以使用获取到的标准时间来计算相差天数和周数\n\n"},{"insert":{"image":"R10512487-38ca870d03f3f8fae36f8ae47de9ec0b_13764_903_140.png"}},{"insert":"\n"},{"insert":{"image":"R10512487-6bdc25cd69073c90c7a1e94a75ebf2a4_22691_905_236.png"}},{"insert":"\n\n计算相差月数时不需要考虑时区问题,因为月数可以直接通过年月日算出\n\n"},{"insert":{"image":"R10512487-9ba14de7baaf324dd29830e2cc79b393_35253_920_320.png"}},{"insert":"\n\n日期推算可以在为时间变量进行赋值的时候对相应的单位进行计算得出\n\n"},{"insert":{"image":"R10512487-2ad7576dbabb41482517eb0a1b60994b_64322_839_669.png"}},{"insert":"\n"}]
[{"insert":"1. 通过标准时间时计算日期差\n2. 通过时间变量赋值推算偏移日期\n(重做https://demo.ivx.cn/%E6%97%A5%E6%9C%9F%E8%AE%A1%E7%AE%97%E5%99%A8)\n\n"}]
1. 通过标准时间时计算日期差
2. 通过时间变量赋值推算偏移日期
R10580997-883a59193d7536df8ee1ab9ee35c7e94_16434_520_479.png
https://v4pre.h5sys.cn/play/Zpyxn7Nn