zoukankan      html  css  js  c++  java
  • JS获取四位年份和2位年份

    let date=new Date();
    //四位
    let yearFour=date.getFullYear();
    //两位
    let yearFour=date.getFullYear().toString().subsr(2,2);

    众所周知,js里面有个内置对象Date,记录了有关系统时间的信息。
    我们只要实例化一个Date对象,var date= new Date();
    然后就可以用这个对象获取有关当前时间的各种信息,比如年份,月份,日期以及时间等。

    这里有一个小小的问题,在获取年份的时候,不同的浏览器竟然有不一样的结果喔。

    var year=date.getYear(); 
    alert(year);

    E中显示2010,没问题;但是FF,Chrome等却显示110,神奇呢~~~

    我们仔细观察一下,发现2010-1900=110!

    溯其根源,是因为在2000年之前,我们是两位数来表示年份的,比如拳皇97,拳皇99, 没有说拳皇1997的吧?

    所以呢,在javascript里,获取的年份是默认减去1900的,当然在2000年之前,这是没问题的,但是2000年之后,就会出现110年这样的怪现象。

    其实这么说来,110年才是正常的,IE中显示2010年的原因只是IE这个“万能”的浏览器自作主张地对getYear()的值加上1900罢了。

    对了,这里顺便说一下,在java里面,也有这个现象,Date对象获取年份的时候也是默认减去1900的,不过在java里面,getYear()这个方法被标识为过时的,系统会提示,如果想获取到4位数的年份,需要用Calendar对象。

    好了,我们回到js。要解决这个浏览器显示不同年份的问题怎么办呢?

    很简单,两个方法。

    • 1.改用getFullYear()方法,直接获取4位数的年份值
    var myDate = new Date();
    var year=myDate.getFullYear();
    var yy = year.toString().substr(2, 2); 
    alert(yy)取值19
    • 2.getYear()做个3元运算来处理,
    参考代码:比如今年是2011年,取11 
    var myDate = new Date(); 
    var year = myDate.getYear() 
    var year = year < 2000 ? year + 1900 : year 
    var yy = year.toString().substr(2, 2); 
    alert(yy)取值19

    当时做记录的时候忘记记录原文链接了,作者看到之后可以私信我,我补上原文链接.

  • 相关阅读:
    C# 使用NPOI 实现Excel的简单导入导出
    C# 根据Excel模版导出文件
    移动通信第九组网络抓包作业
    武金龙老师的教导(第9小组)
    【Python核心编程笔记】一、Python中一切皆对象
    自己喜欢的几个前端框架
    2018-1-6-个人博客、博客园、微信公众号、Github、本地同步写博客
    2018-1-6-IDEA快速代码生成
    CodeMirror动态修改代码(关键: editor.getDoc().setValue(data); editor.refresh();)
    FaceId枚举表(用于VBA的加载项)
  • 原文地址:https://www.cnblogs.com/bluealine/p/13607635.html
Copyright © 2011-2022 走看看