V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Livid
267.12D
577.27D

关于网页上的时间渲染

  •  
  •   Livid ·
    PRO
    · Apr 3, 2022 · 4973 views
    This topic created in 1485 days ago, the information mentioned may be changed or developed.

    输入:

    Unix Timestamp

    输出:

    根据用户 Locale 设置渲染不同的结果,比如 Apr 2, 2022 或者 2022 年 4 月 2 日


    上面这样的需求有可能不用任何第三方库,就只用 Vanilla JS 实现么?

    12 replies    2022-04-03 20:48:58 +08:00
    Cbdy
        1
    Cbdy  
       Apr 3, 2022
    new Date().toLocaleString('sv', { hour12: false, timeZone: 'Asia/Shanghai' })
    DrakeXiang
        2
    DrakeXiang  
       Apr 3, 2022
    loading
        3
    loading  
       Apr 3, 2022
    重点应该是得到正确的 locale ,目前我只想到用 navigator.language
    loading
        4
    loading  
       Apr 3, 2022
    可以参考这个纯粹的时钟网站:

    https://time.is/
    Cbdy
        5
    Cbdy  
       Apr 3, 2022   ❤️ 1
    @loading navigator.language 这个非常不准
    learningman
        6
    learningman  
       Apr 3, 2022   ❤️ 2
    https://flyhigher.top/develop/2482.html
    昨天看到的一篇谈这个的文章,讲的挺好的
    mxT52CRuqR6o5
        7
    mxT52CRuqR6o5  
       Apr 3, 2022   ❤️ 1
    new Date().toLocaleDateString(undefined,{dateStyle:'medium'})
    我这边测下来用 dateStyle:'medium'中英文都是符合要求的
    Date.prototype.toLocaleString
    Date.prototype.toLocaleDateString
    Intl.DateTimeFormat
    应该都可以接收这个参数
    dawniii
        8
    dawniii  
       Apr 3, 2022
    locale 和 language 都是系统可修改的吧,无所谓准不准,按用户的设置来。
    @loading @Cbdy
    Cbdy
        9
    Cbdy  
       Apr 3, 2022 via Android
    @dawniii 我是指浏览器不准,比如中文系统,中文语言设置的 Firefox 获取的 language 是 en
    duanxianze
        10
    duanxianze  
       Apr 3, 2022
    如果你想获取用户的时区,那最好的当然是定位权限,当然定位也不一定准,但只要不是用户刻意虚拟定位,显然确定时区还是没问题的,用户不给,就按 ip 来
    os7blue
        11
    os7blue  
       Apr 3, 2022
    如果只是展示:
    其实你如果用标准的 yyyy-MM-dd hh:mm:ss 用阿拉伯数字,世界通用的,不要去在乎语言问题,根据用户自己的设置做转换就行了,如果用户的设置造成的问题,那不是你的错。你顶多给个提醒就仁至义尽了。
    如果对时间有安全需要:
    你可以后端一并返回时间戳和地区信息,或者自己做一个授时服务,判断时间区间就行了,使网页上的时钟信息独立于本机。
    如果用户使用了代理导致你获取的定位信息不对,那不是你该考虑的问题,你只要保证自己的服务相关时间戳就行了。
    bnm965321
        12
    bnm965321  
       Apr 3, 2022
    2 楼说的 Intl 是 web 标准的 i18n 方式
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5600 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 171ms · UTC 07:08 · PVG 15:08 · LAX 00:08 · JFK 03:08
    ♥ Do have faith in what you're doing.