最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

关于JavaScript的Date最详细解读

来源:懂视网 责编:小采 时间:2020-11-27 20:24:24
文档

关于JavaScript的Date最详细解读

关于JavaScript的Date最详细解读:基础的 Date() 就不说了~ : )如何获得某个月的天数?不知道大家遇到过这个问题吗?我想如果你们写过日期组件一定有这个问题,我当时的解决方案是这样的:以下的三个方法,month 参数我都根据 JS 本身对于 Date 的月份定义,采用0为1月最老实的办法cons
推荐度:
导读关于JavaScript的Date最详细解读:基础的 Date() 就不说了~ : )如何获得某个月的天数?不知道大家遇到过这个问题吗?我想如果你们写过日期组件一定有这个问题,我当时的解决方案是这样的:以下的三个方法,month 参数我都根据 JS 本身对于 Date 的月份定义,采用0为1月最老实的办法cons

UTC(世界标准时间)

协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文「Coordinated Universal Time」/法文「Temps Universel Cordonné」而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治平时

CST(北京时间)

北京时间,China Standard Time,中国标准时间。在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8。

不过这个CST这个缩写比较纠结的是它可以同时代表四个不同的时间:

  • Central Standard Time (USA) UT-6:00

  • Central Standard Time (Australia) UT+9:30

  • China Standard Time UT+8:00

  • Cuba Standard Time UT-4:00

  • 插一个中国地区 JS 客户端时间和服务端时间不一致的问题

    总结就是,前后端去传时间的时候,尽量都用 UTC 时间。

    ISO 日期和时间的表示方法

    if ( !Date.prototype.toISOString ) {
     ( function() {
    
     function pad(number) {
     if ( number < 10 ) {
     return '0' + number;
     }
     return number;
     }
    
     Date.prototype.toISOString = function() {
     return this.getUTCFullYear() +
     '-' + pad( this.getUTCMonth() + 1 ) +
     '-' + pad( this.getUTCDate() ) +
     'T' + pad( this.getUTCHours() ) +
     ':' + pad( this.getUTCMinutes() ) +
     ':' + pad( this.getUTCSeconds() ) +
     '.' + (this.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) +
     'Z';
     };
    
     }() );
    }

    通过 Polyfill 我们就能知道 ISO 是怎么表示时间的,最主要的特征是最后一位是“Z”,然后表示的总是 UTC 时间。

    额外的补充

    .valueOf() 和 .getTime()

    .valueOf()的功能和.getTime()一样。

    该方法通常在 JavaScript 内部被调用,而不是在代码中显式调用。什么意思?没有 valueOf,那么Date的实例是不能进行运算的。

    var obj = Object.create(null);
    obj + 1; // Uncaught TypeError: Cannot convert object to primitive value(…)

    .toJSON

    直接看这个 API 的名字的时候,我以为会返回一个 JSON 格式的字符串,但其实是这么一个东西

    new Date().toJSON() // "2016-05-05T06:03:28.130Z"

    其实是这么回事

    JSON.stringify(new Date()) // ""2016-05-05T06:06:02.615Z""

    那结果能够被 parse 吗?

    JSON.parse(JSON.stringify(new Date())) // "2016-05-05T06:19:24.766Z"
    JSON.parse('"' + new Date().toJSON() + '"') // "2016-05-05T06:19:24.766Z"

    但是结果只是字符串而已。需要再讲这个字符串交给 new Date() 才行。

    .toLocaleFormat()

    不属于任何标准。在JavaScript 1.6中被实现。似乎也只有 Firefox 自持这个 API,其实正确姿势是用.toLocaleDateString()

    .toLocale各种String()

    .toLcale各种String(locales [, options]])

    妈的这个 API 有点烦,看 MDN 的文档你就知道。这个 API 是用来本地化时间的。

    这里稍微说下我对这些参数的理解:

    locales

    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    
    // formats below assume the local time zone of the locale;
    // America/Los_Angeles for the US
    
    // US English uses month-day-year order
    alert(date.toLocaleString("en-US"));
    // → "12/19/2012, 7:00:00 PM"
    
    // British English uses day-month-year order
    alert(date.toLocaleString("en-GB"));
    // → "20/12/2012 03:00:00"
    
    // Korean uses year-month-day order
    alert(date.toLocaleString("ko-KR"));
    // → "2012. 12. 20. ?? 12:00:00"
    
    // Arabic in most Arabic speaking countries uses real Arabic digits
    alert(date.toLocaleString("ar-EG"));
    // → "???/???/???? ?:??:?? ?"
    
    // for Japanese, applications may want to use the Japanese calendar,
    // where 2012 was the year 24 of the Heisei era
    alert(date.toLocaleString("ja-JP-u-ca-japanese"));
    // → "24/12/20 12:00:00"
    
    // when requesting a language that may not be supported, such as
    // Balinese, include a fallback language, in this case Indonesian
    alert(date.toLocaleString(["ban", "id"]));
    // → "20/12/2012 11.00.00"

    locales所指的地区的时区和语言输出。

    options

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

  • localeMatcher 选择本地匹配的什么算法,似乎没什么大用

  • timeZone 再设置下 UTC 时区

  • hour12 是否12小时制

  • formatMatcher 各日期时间单元的格式化

  • weekday Possible values are "narrow", "short", "long".

  • era Possible values are "narrow", "short", "long".

  • year Possible values are "numeric", "2-digit".

  • month Possible values are "numeric", "2-digit", "narrow", "short", "long".

  • day Possible values are "numeric", "2-digit".

  • hour Possible values are "numeric", "2-digit".

  • minute Possible values are "numeric", "2-digit".

  • second Possible values are "numeric", "2-digit".

  • timeZoneName Possible values are "short", "long".

  • 栗子:

    var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
    
    date.toLocaleString("en-US", {hour12: false}); // "12/19/2012, 19:00:00"
    
    var options = {timeZoneName:'long',weekday: "long", year: "2-digit", month: "narrow", day: "numeric"};
    date.toLocaleString("en-US", options); // "Thursday, D 20, 12, China Standard Time"

    插一个JavaScript 显示 Y-m-d H:i:s 的日期时间格式

    老实的方法

    let date = new Date();
    let result = [
     [
     date.getFullYear(),
     date.getMonth() + 1,
     date.getDate()
     ].join('-'),
     [
     date.getHours(),
     date.getMinutes(),
     date.getSeconds()
     ].join(':')
    ].join(' ').replace(/\b\d\b/g, '0$&');

    diao 一点的方法

    var date = new Date();
    var result = date.toLocaleString('zh-CN', { hour12: false })
     .replace(/\//g, '-').replace(/\b\d\b/g, '0$&');

    一些有用的时间库

  • https://github.com/moment/moment

  • https://github.com/rmm5t/jquery-timeago

  • 声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    关于JavaScript的Date最详细解读

    关于JavaScript的Date最详细解读:基础的 Date() 就不说了~ : )如何获得某个月的天数?不知道大家遇到过这个问题吗?我想如果你们写过日期组件一定有这个问题,我当时的解决方案是这样的:以下的三个方法,month 参数我都根据 JS 本身对于 Date 的月份定义,采用0为1月最老实的办法cons
    推荐度:
    标签: 比较 js 详细
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top