js中时间new Date()详解以及实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中时间new Date()详解以及实例相关的知识,希望对你有一定的参考价值。

介绍

var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)         // 所以获取当前月份是myDate.getMonth()+1; 
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间

JS获取当前时间戳的方法-javascript 获取当前毫秒时间戳有以下三种方法:

var timestamp =Date.parse(new Date());    结果:1280977330000       //不推荐; 毫秒改成了000显示

var timestamp =(new Date()).valueOf();       结果:1280977330748       //推荐; 

var timestamp=new Date().getTime();         结果:1280977330748        //推荐;

 

js中单独调用new Date();  显示这种格式  Mar 31 10:10:43 UTC+0800 2012

但是用new Date() 参与计算会自动转换为从1970.1.1开始的毫秒数

 

将字符串形式的日期转换成日期对象

var strTime="2011-04-16";    //字符串日期格式           
var date= new Date(Date.parse(strTime.replace(/-/g,  "/")));      //转换成Data();

 

new Date() ;     //参数可以为整数; 也可以为字符串; 但格式必须正确

new Date(2009,1,1);       //正确

new Date("2009/1/1");    //正确

new Date("2009-1-1");    //不兼容,在谷歌下能解析,在IE浏览器9及以上结果为[date] Invalid Date,IE8及以下结果为NAN。

 

说明:日期对象new Date()的参数形式如下:

1)new Date("month dd,yyyy hh:mm:ss");
2)new Date("month dd,yyyy");
3)new Date(yyyy,mth,dd,hh,mm,ss);
4)new Date(yyyy,mth,dd);
5)new Date(ms);

需要注意最后一种形式,参数表示的是需要创建的时间和 GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:

month:用英文 表示月份名称,从January到December
mth:用整数表示月份,从0(1月)到11(12月)
dd:表示一个 月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm: 分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数
 

例如:

new Date("January 12,2006 22:19:35"); 

new Date("January 12,2006"); 

new Date(2006,0,12,22,19,35); 

new Date(2006,0,12); 

new Date(1137075575000); 

上面的各种创建形式都表示2006年1月12日这一天。

实例一:计算两个日期相隔的天数

先贴方法:

//日期格式2017-02-01或者2017/02/01等
    //startDate开始日期,endDate结束日期,separator分隔符号如‘-‘
    function DateDiff(startDate, endDate,separator){
       var aDate, oDate1, oDate2, iDays ;
       aDate = startDate.split(separator);
       oDate1 = new Date(aDate[0]+‘-‘+aDate[1]+‘-‘+aDate[2]) ;
       aDate = endDate.split(separator);
       oDate2 = new Date(aDate[0]+‘-‘+ aDate[1] +‘-‘+aDate[2]);
       iDays = parseInt(Math.abs(oDate1 -oDate2)/1000/60/60/24); //把相差的毫秒数转换为天数
       return iDays ;
    }
    console.log(DateDiff(‘2017-02-01‘, ‘2017-03-01‘,‘-‘));

new Date(‘2017-02-01‘)格式处理方式。

也可以这样实现:

function DateDiff(startDate, endDate,separator){
       var aDate, oDate1, oDate2, iDays ;
       aDate = startDate.split(separator);
       oDate1 = new Date(aDate[0],aDate[1]-1,aDate[2]) ;
       console.log(oDate1);
       aDate = endDate.split(separator);
       oDate2 = new Date(aDate[0],aDate[1]-1,aDate[2]);
       iDays = parseInt(Math.abs(oDate1 -oDate2)/1000/60/60/24); //把相差的毫秒数转换为天数
       return iDays ;
    }
    console.log(DateDiff(‘2017-02-01‘, ‘2017-03-01‘,‘-‘));

new Date(2017,02,01)格式处理方式,但是月份需要减1,月份是从0-11。

实例二:JS判断某年某月有多少天

JavaScript里面的new  Date("xxxx/xx/xx")这个日期的构造方法有一个妙处,当你传入的是"xxxx/xx/0"(0号)的话,得到的日期是"xx"月的前一个 月的最后一天("xx"月的最大取值是69,题外话),如果传入"1999/13/0",会得到"1998/12/31"。而且最大的好处是当你传 入"xxxx/3/0",会得到xxxx年2月的最后一天,它会自动判断当年是否是闰年来返回28或29,不用自己判断,太方便了!!所以,我们想得到选 择年选择月有多少天的话,只需要

var d=new Date("选择年/选择月+1/0");

alert(d.getDate());

下面是使用Javascript编写的获取某年某月有多少天的getDaysInOneMonth(year, month)方法:

    function getDaysInOneMonth(year, month){  
     month = parseInt(month,10)+1;  
     var d= new Date(year+"/"+month+"/0");  
     return d.getDate();  
     }  

Chrome浏览器(谷歌浏览器)对这个特性不支持,得到的结果是NAN。兼容性问题啊!其原因就是非标准日期格式。

改成如下的格式就OK:

function getDaysInMonth(year,month){
      var month = parseInt(month,10);
      var temp = new Date(year,month,0);
      return temp.getDate();
    }
    console.log(getDaysInMonth(2017,2)); //28

实例三:js获取某年某月的哪些天是周六和周日

<div id="text"></div>
<script type="text/javascript">
    function time(y,m){
    var tempTime = new Date(y,m,0);
    var time = new Date();
    var saturday = new Array();
    var sunday = new Array();
    for(var i=1;i<=tempTime.getDate();i++){
        var ss = time.setFullYear(y,m-1,i);
        var day = time.getDay();
        if(day == 6){
            saturday.push(i);
        }else if(day == 0){
            sunday.push(i);
        }
    }
    var text = y+""+m+"月份"+"<br />"
                +"周六:"+saturday.toString()+"<br />"
                +"周日:"+sunday.toString();
    document.getElementById("text").innerhtml = text;
}
 
time(2017,2);
</script>

参考地址:https://segmentfault.com/a/1190000003710954?mType=Group

http://blog.csdn.net/liaozhongping/article/details/51139854

 

以上是关于js中时间new Date()详解以及实例的主要内容,如果未能解决你的问题,请参考以下文章

js常用代码片段(更新中)

python中时间的减法问题

js new Date() 测试

java的String类型怎么转化成日期类型?

mysql中时间计算函数SQL DATE_SUB()用法

js 标准时间转为非标准时间