输入:
Unix Timestamp
输出:
根据用户 Locale 设置渲染不同的结果,比如 Apr 2, 2022
或者 2022 年 4 月 2 日
上面这样的需求有可能不用任何第三方库,就只用 Vanilla JS 实现么?
1
Cbdy 2022-04-03 15:53:34 +08:00
new Date().toLocaleString('sv', { hour12: false, timeZone: 'Asia/Shanghai' })
|
2
DrakeXiang 2022-04-03 16:00:50 +08:00
|
3
loading 2022-04-03 16:25:10 +08:00
重点应该是得到正确的 locale ,目前我只想到用 navigator.language
|
4
loading 2022-04-03 16:46:36 +08:00
|
6
learningman 2022-04-03 16:54:41 +08:00 2
https://flyhigher.top/develop/2482.html
昨天看到的一篇谈这个的文章,讲的挺好的 |
7
mxT52CRuqR6o5 2022-04-03 17:01:11 +08:00 1
new Date().toLocaleDateString(undefined,{dateStyle:'medium'})
我这边测下来用 dateStyle:'medium'中英文都是符合要求的 Date.prototype.toLocaleString Date.prototype.toLocaleDateString Intl.DateTimeFormat 应该都可以接收这个参数 |
9
Cbdy 2022-04-03 19:33:44 +08:00 via Android
@dawniii 我是指浏览器不准,比如中文系统,中文语言设置的 Firefox 获取的 language 是 en
|
10
duanxianze 2022-04-03 19:33:49 +08:00
如果你想获取用户的时区,那最好的当然是定位权限,当然定位也不一定准,但只要不是用户刻意虚拟定位,显然确定时区还是没问题的,用户不给,就按 ip 来
|
11
os7blue 2022-04-03 20:16:07 +08:00
如果只是展示:
其实你如果用标准的 yyyy-MM-dd hh:mm:ss 用阿拉伯数字,世界通用的,不要去在乎语言问题,根据用户自己的设置做转换就行了,如果用户的设置造成的问题,那不是你的错。你顶多给个提醒就仁至义尽了。 如果对时间有安全需要: 你可以后端一并返回时间戳和地区信息,或者自己做一个授时服务,判断时间区间就行了,使网页上的时钟信息独立于本机。 如果用户使用了代理导致你获取的定位信息不对,那不是你该考虑的问题,你只要保证自己的服务相关时间戳就行了。 |
12
bnm965321 2022-04-03 20:48:58 +08:00
2 楼说的 Intl 是 web 标准的 i18n 方式
|