JavaScript 的 new date() 和 date() 为啥输出不一样?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 的 new date() 和 date() 为啥输出不一样?相关的知识,希望对你有一定的参考价值。

<script type="text/javascript">
<!--
alert( Date() ); // 输出:Mon Jan 9 01:27:18 2012
alert( new Date() ); // 输出:Mon Jan 9 01:27:18 UTC+0800 2012
//-->
</script>

在我这里输出是完全一样的.
但是,他们是有区别的,alert( Date() ); 是将Date作为方法来使用,new Date()是将Date作为类来使用.
另外,这两句话相当于
alert((Date()).toString());
alert((new Date()).toString());追问

都是调用 Date(),传入的参数看起来都一样(参数为空),做为方法来使用和做为类来使用为什么输出的结果就不相同?

追答

在IE6,7,8中的确存在这种情况,但IE9与Firefox都不存在这种情况.至于为什么不一样,道理很简单,如下:
function Date()
return "XX";

Date.prototype.toString=function()
return "YY";

按照你上述的方法调用,你会发现,(Date()).toString()输出XX,而(new Date()).toString()则输出YY.

参考技术A 一个有时区信息,一个没有。 参考技术B 一个是按本机的时间格式
一个是按标准的全的时间格式

Javascript中的Date


Date类用来处理日期和时间,基于1970年1月1日(世界标准时间)起的毫秒数(时间戳)


1、创建日期对象

var now = new Date();//当前时间
var date = new Date(1000);//1970年1月1日起过了秒钟的时间
var date = new Date(year,month,day,hour,minute,second,millisecond);//通过分别指定各个时间分量来创建日期对象


2、提供的方法

getTime()获取一个Date对象所基于的时间戳

此外还提供了一系列的getter/setter方法来操作各个时间分量,如getHours()

注意:除了getMonth()(获取月份)的返回值是从0开始,其余都是从1开始


示例

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>Javascript测试</title>
    <script type="text/javascript">
        var now = new Date();
        alert(now);
        alert("时间戳: " + now.getTime());
        var year = now.getFullYear();
        var month = now.getMonth();
        var day = now.getDate();
        alert("年月日:" + year + "-" + (month<10?"0"+month:month) + "-" + (day<10?"0"+day:day));
        var hour = now.getHours();
        var minute = now.getMinutes();
        var second = now.getSeconds();
        alert("时分秒:" + hour + ":" + (minute<10?"0"+minute:minute) + ":" + (second<10?"0"+second:second));
    </script>
</head>
<body>

</body>
</html>

效果图

技术分享







以上是关于JavaScript 的 new date() 和 date() 为啥输出不一样?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript - Date(),new Date()和ISODate之间的区别

Javascript中的Date

javascript中new Date()的浏览器兼容性问题

javaScript系列:js中获取时间new Date()详细介绍

如何让 JavaScript 的 New Date() 函数在不同时区显示相同? [复制]

javascript中new Date()的浏览器兼容性问题