From e79764ba0166b70833841dbc023b441d006e0a6a Mon Sep 17 00:00:00 2001 From: "feijie.zheng" Date: Wed, 28 Aug 2024 21:56:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=B6=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\240\207\345\207\206\345\272\223\346\226\207\346\241\243.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\347\275\221\347\253\231\345\211\215\347\253\257/\345\211\215\347\253\257\345\206\205\345\256\271/\346\240\207\345\207\206\345\272\223\346\226\207\346\241\243.md" "b/\347\275\221\347\253\231\345\211\215\347\253\257/\345\211\215\347\253\257\345\206\205\345\256\271/\346\240\207\345\207\206\345\272\223\346\226\207\346\241\243.md" index a58a35ae3..dde1b88cd 100644 --- "a/\347\275\221\347\253\231\345\211\215\347\253\257/\345\211\215\347\253\257\345\206\205\345\256\271/\346\240\207\345\207\206\345\272\223\346\226\207\346\241\243.md" +++ "b/\347\275\221\347\253\231\345\211\215\347\253\257/\345\211\215\347\253\257\345\206\205\345\256\271/\346\240\207\345\207\206\345\272\223\346\226\207\346\241\243.md" @@ -1433,7 +1433,7 @@ JS内部,字符以UCS-2(UTF-16的子级)的格式储存。UTF-16结合了 > - 额外产生问题(feature):(若不做额外处理、直接`new Date(传参)`,则)不同时区看到的时间不同(因为时间戳相同,但展示的时区不同) >- 「在A时区存储时间,在A或其他时区展示,展示的是同一个时间刻度」的解决方案: > -> 1. 方案一:不包含时区的时间字符串 +> 1. 方案一:不包含时区的时间字符串(不能也不需要进行偏移,表示某个固定时区(如:UTC+0或服务端时区)的时间刻度) > 2. 方案二:客户端存时间戳要偏移时区到某个固定时区(如:UTC+0或服务端时区)、取出的时间戳也要逆向偏移(有漏洞:请求参数可以修改,js代码可以修改,时间戳由客户端处理和决定 有风险。但没有其他更好方案) > > e.g. 假设客户端是UTC+8,获取`2024-05-28 0:0:0 UTC+8`是时间戳`x`,若要偏移成UTC+0时间刻度一致的`2024-05-28 0:0:0 UTC+0`则要存时间戳`x + 8*1000*60*60`;服务端取回的`y`表示UTC+0的`2024-05-28 0:0:0 UTC+0`,若直接在UTC+8的客户端`new Date(y)`则会展示`2024-05-28 8:0:0 UTC+8`,因此若要展示0点时间刻度,则要逆向偏移`new Date(y - 8*1000*60*60)`再去修改时间字符串后面的UTC字段。