您好,欢迎来到bst2222全球奢华游戏,贝斯特全球最奢游戏官网,贝斯特奢华的游戏平台国际商会官网!
bst2222全球奢华游戏
发布日期:2024/11/09浏览次数:
同一个页面的时间变来变去啥原理

  时间终于变成了美国太平洋时间★■★,证明了美国人是早上开始看这个大会★★■■,然后持续一整天。我们中国人是晚上开始看,然后如果要追直播则需要通宵了。

  注意到这里面在获取时间时,大量用了getUnixTimestamp方法。

  我又把系统时区设置成中国北京时间(UTC+8:00)◆◆★,浏览器 console 里执行这个 js 代码后,得到如下结果:

  我们知道 h 就代表时区◆★★◆,那么这第一行 tz 就是用美国纽约时间来设定一个初始值◆■◆■■■,第二行 tz转化为我们系统设置的时区★★■★◆◆,第三行 valueOf 最终可以转化成一个时间戳。

  但细想想又觉得不大对劲,这 Spring 官网还照顾到我是中国人,然后专门为我显示中国时间?而且它是咋知道我是中国人的呢?

  我们随便拿一个值浏览器 console 里执行这个函数验证一下,比如我们想看看美国纽约时间的 2021-09-01 08:00 转换成北京时间(我系统设置的时间)的结果是什么■★◆■。

  感谢这位读者提出的问题■◆◆,感谢各国亲朋好友提供的支持■★■,让我有了一个快乐探索的下午◆■◆■★,以及这篇随性而发的文章!

  我国外就这么些朋友了,这事就得到了验证,SpringOne 官网上我看到的CST 肯定就代表中国时间了,因为这个网站显示的时间会随着访问人的时区而变化。

  广告声明■★★■★:文内含有的对外跳转链接(包括不限于超链接■■、二维码、口令等形式)★◆◆,用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明◆★★★◆■。

  我是通过分析得出★■,如果是美国时间的晚上 8 点开始■★★■,那整个会就大部分都是凌晨多进行的■★■■,感觉不大合理,所以推测这应该是中国的时间,也就是China Standard Time UT+8★■:00。

  这个函数就是和系统设置时区交互的关键,它可以查看你的所在时区,准确说是你系统设置的时区。

  我把系统时区设置成美国太平洋时区(UTC-8◆■:00),浏览器 console 里执行这个 js 代码后,得到如下结果★■★★◆:

  具体怎么变化★★◆■◆★,就是通过刚刚的 getUnixTimestamp 这个函数了◆◆★■◆■。

  于是乎这个转换后的值,就填充到页面上 class 为tz-datetime这个标签下了。

  于是我又在另一个 js 里面找到了这个方法的定义,在core.min.js里■★◆■◆。

  然后他说了一句话◆◆★■★,一句点醒梦中人★◆◆,他说他马上就要回国了★★■■★,为了提前适应◆★★◆■◆,所以把电脑的时区设置成了中国。

  正当一筹莫展的时候◆◆★■◆■,我又问了我一个快回国的英国朋友★◆★■★◆,他访问之后居然显示的也是中国时间!

  事情的起因是这样的★★■,之前我发了 Spring 的一个官方技术大会 SpringOne 的预告★★。

  完美★◆◆,这个函数把美国纽约时间的2021-09-01 08:00转换成了北京时间的2021-09-01 20:00,刚好差 12 个小时嘛,没毛病。

  这一切就通了■■★■◆,这个 js 函数可以获取到我们系统设置的时区◆■◆◆★,也就自然可以随着系统时区,来动态变化页面上的时间了。

  于是我 [那啥] 了一下,发现无论怎么切换 vpn,显示的时间一直是 CST,中国时间■★■◆★■。

  在茫茫一片 js 包中我找到了一个叫schedule.js的,一看就是负责给这些时间赋值的◆◆★◆◆。

  做技术人我觉得这点比较好,就是毫无目的★■■◆◆,只为解答一个心中的疑惑,就愿意花上一下午时间去研究研究,同时得出结论后的那种快乐,我觉得是独有的一种享受。