【javaScript】new Date() 日期格式处理和写一个自定义格式输出

new Date() 日期格式处理

汇总一下new Date().getxxx/setxxx的方法输出,简述一些注意点:

  • new Date(param)param可以有几种格式,有浏览器通用的年月日时分秒的格式,但也会有IE,safari可能不兼容的格式,报错invalid date,需要了解的可以看这篇文章 解决js new Date()的浏览器兼容性问题
  • getYear()方法返回的是年份的后两位,但这是1970-1999年才是两位,2000-???则一直加上去,会出现三位以上的返回,2000就是100,依次类推…
  • getMonth()返回的是0-11的数值,0是一月Jan,所以输出的时候需要注意+1;同理getDay()返回0-6,0代表星期日Sun;
  • getTime()返回的是1970.1.1开始到现在的毫秒数,同理valueof()也是一样的,注意Date.parse(new Date()返回的也是毫秒数,但会将后三位读取为0,不建议使用;
  • 对于不存在的日期格式,就如new Date(yyyy,mth,dd,hh,mm,ss)中除了yyyy之外其他如果超过其取值范围的话,会像其’上级’进制,如ss(0-59)如果写着65,那就用65减去 [区间位60],的05并像其’上级’,mm进一位,表达不好可以看例子…
        /*
        * js中单独调用new Date();  显示这种格式  Wed Jul 31 2019 13:20:09 GMT+0800 (中国标准时间)
        * 但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数
        */
        var current_date = new Date(); // Wed Jan 24 2019 13:20:09 GMT+0800 (中国标准时间)
        var before_date = new Date("1991/2/25 11:59:05"); // Mon Feb 25 1991 11:59:05 GMT+0800 (中国标准时间)
        var demo_date = new Date(667454345000); // Mon Feb 25 1991 11:59:05 GMT+0800 (中国标准时间)
        // 对于输入超过取值范围的参数,实行上级进位制
        var error_date = new Date(2018,13,25,13,56,08);
        var error_date1 = new Date(2018,1,30,13,56,08);
        console.log(error_date); // mth(0-11) 区间位12  Mon Feb 25 2019 13:56:08 GMT+0800
        console.log(error_date1); // dd(闰年1-29|平年1-28) 2018区间位28 Fri Mar 02 2018 13:56:08 GMT+0800
        ---------------------------------------------------------------------------------------

        // getxxx获取的数值number格式:
        before_date.getYear(); //  91   1970-1999获取当前年份(2位) 
        current_date.getYear(); //  119   2000-????获取3位以上就是一直算上去 2000年刚好为100
        before_date.getFullYear(); //  1991  获取完整的年份(4位,1970-????)  
        before_date.getMonth(); //  1  获取当前月份(0-11,0代表1月),所以获取当前月份是before_date.getMonth()+1;   
        before_date.getDate(); //  25  获取当前日(1-31)  
        before_date.getDay(); //  1  获取当前星期X(0-6,0代表星期天)  
        before_date.getTime(); // 667454345000  获取当前时间(从1970.1.1开始的毫秒数) 
        before_date.valueOf(); // 667554345000 同上
        before_date.getHours(); // 11  获取当前小时数(0-23)  
        before_date.getMinutes(); //   59  获取当前分钟数(0-59)  
        before_date.getSeconds(); //  5   获取当前秒数(0-59)  
        current_date.getMilliseconds(); // 获取当前毫秒数(0-999)
        ----------------------------------------------------------------------------------------
        // 设置setxxx
        setDate() // 设置 Date 对象中月的某一天 (1 ~ 31)
		setMonth() // 设置 Date 对象中月份 (0 ~ 11)
		setFullYear() // 设置 Date 对象中的年份(四位数字)
		setFullYear() // setYear()方法已经淘汰
		setHours() // 设置 Date 对象中的小时 (0 ~ 23)
		setMinutes() // 设置 Date 对象中的分钟 (0 ~ 59)
		setSeconds() // 设置 Date 对象中的秒钟 (0 ~ 59)
		setMilliseconds() // 设置 Date 对象中的毫秒 (0 ~ 999)
		setTime() // 以毫秒设置 Date 对象
		setUTCDate() // 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)
		setUTCMonth() // 根据世界时设置 Date 对象中的月份 (0 ~ 11)
		setUTCFullYear() // 根据世界时设置 Date 对象中的年份(四位数字)
		setUTCHours() // 根据世界时设置 Date 对象中的小时 (0 ~ 23)
		setUTCMinutes() // 根据世界时设置 Date 对象中的分钟 (0 ~ 59)
		setUTCSeconds() // 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)
		setUTCMilliseconds() // 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)

汇总一下new Date().toxxx/toLocalexxx的方法输出,简述一些注意点:

  • toDateString/toTimeString || toLocaleDateString/toLocaleTimeString两者的输出文本格式有所差异,且后者新增的参数 locales 和 options 使程序能够指定使用哪种语言格式化规则
  • toGMTString、toUTCString两者在定义上只是名字有所差异,其实GMT在时间数值上是接近UTC的,具体可以看这篇文章 GMT与UTC,他们输出的格式一样,是标准时间
  • toLocaleString方法在不同浏览器输出的文本格式不同,我们可以自定义一个统一的输出
 // 返回字符串string格式:
        current_date.toLocaleDateString(); // yyyy/MM/dd  获取当前日期  
        current_date.toLocaleTimeString(); // (上午/下午) hh:mm:ss  获取当前时间
        current_date.toLocaleString( ); // 获取日期与时间 
//  ————————————————————————————————–————————————————————————————————–
// 1、当前系统区域设置格式(toLocaleDateString和toLocaleTimeString)

     例子:(new Date()).toLocaleDateString() + " " + (new Date()).toLocaleTimeString()
     结果: 200812916:13:11

// 2.普通字符串(toDateString和toTimeString)

     例子: (new Date()).toDateString() + " " + (new Date()).toTimeString()
     结果:Tue Jan 29 2008 16:13:11 UTC+0800

// 3.格林威治标准时间(toGMTString)

     例子: (new Date()).toGMTString()
     结果:Tue, 29 Jan 2008 08:13:11 UTC

// 4.全球标准时间(toUTCString)

     例子: (new Date()).toUTCString()
     结果:Tue, 29 Jan 2008 08:13:11 UTC

// 5.Date对象字符串(toString)

     例子: (new Date()).toString()
     结果:Tue Jan 29 16:13:11 UTC+0800 2008

// ————————————————————————————————–————————————————————————————————–

针对toLocaleString的自定义输出方法


        /** 关于toLocaleString返回的文本格式
         *  在主流浏览器谷歌、火狐输出的文本格式为"yyyy/MM/dd (上午/下午)hh:mm:ss",
         *  在IE返回格式"yyyy/MM/dd (星期几) (上午/下午)hh:mm:ss"
         *  所以我们现在自定义一个返回格式方法
         */
         function setTimeType(){
             var current_time = new Date();
             var current_time_hours = current_time.getHours();
             var current_time_minutes = current_time.getMinutes();
             var current_time_seconds = current_time.getSeconds();
             cth = matchZero(current_time_hours);
             ctm = matchZero(current_time_minutes);
             cts = matchZero(current_time_seconds);

             return current_time.getFullYear() + "/" + (current_time.getMonth() + 1) + "/" + current_time.getDate() +
             " " + tranWeek() + " " + cth + ":" + ctm + ":" + cts;
         }
         function matchZero(num){
            if(num < 10){
                return "0" + num;
            }
            return num;
         }
         function tranWeek(){
             var current_time = new Date();
             var week = current_time.getDay();
             switch(week){
                 case 0: return "周日"; 
                 case 1: return "周一"; 
                 case 2: return "周二"; 
                 case 3: return "周三"; 
                 case 4: return "周四"; 
                 case 5: return "周五";
                 case 6: return "周六";
                 break;
             }
         }
         var time = setTimeType();
         console.log("time",time);

toLocaleString自定义方法测试结果

time 2019/8/1 周四 05:56:53

本文原创,转载请注明出处,如果发现写的有问题欢迎指正
https://blog.csdn.net/Umbrella_Um/article/details/97844312

参考资料文章:
https://www.cnblogs.com/xiaoshujiang/p/5518462.html
http://blog.csdn.net/tomcat_2014/article/details/50514979

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值