Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确构建';日期';JavaScript中的对象?_Javascript - Fatal编程技术网

如何正确构建';日期';JavaScript中的对象?

如何正确构建';日期';JavaScript中的对象?,javascript,Javascript,我正在chrome控制台中运行下一个简单的JS代码: var d = new Date(); console.log(d.__proto__); console.log(d.getYear()); console.log(d.getMonth()); console.log(d.getDay()); 并获得下一个奇怪的输出: Invalid Date 115 6 5 今天是2015年7月10日。那么为什么年、月和日是不正确的,为什么“\uuu proto\uuuu”的“无效日期”是不正确的呢

我正在chrome控制台中运行下一个简单的JS代码:

var d = new Date();
console.log(d.__proto__);
console.log(d.getYear());
console.log(d.getMonth());
console.log(d.getDay());
并获得下一个奇怪的输出:

Invalid Date
115
6
5
今天是2015年7月10日。那么为什么年、月和日是不正确的,为什么“\uuu proto\uuuu”的“无效日期”是不正确的呢?

d.getFullYear(),month是以0为基础的,d.getDay()是一周中的一天,也是以0=周日为基础的,5是周五。您需要d.getDate()。

  • 原型本身是无效日期。您不应该使用原型日期,因为它是每个日期,没有。每个具体的日期对象都用正确的值覆盖字段

  • getYear
    提供自1900年以来的年份。现在是1900年以来的第115年,这是正确的
    getFullYear
    可能更有用

  • getMonth
    提供一月为
    0
    的月份<代码>6表示7月。这也是正确的

  • getDay
    提供一周中的哪一天,周日为
    0
    <代码>5周五,这也是正确的。您可能希望改为
    getDate

尝试
getDate()
而不是
getDay()
getFullYear()
。 至于月份,月份从0开始(一月是0),因此七月是6,而不是7。

1)
getYear
已过时,请改用
getFullYear()

2)
getMonth
返回0-11的值,因此显示的不是7(7-1)


3)
getDay
返回0-6之间的值

所有操作都是这样的,因为这就是 你提到的结果没有一个是错误的

:

getYear()
方法返回年份减去1900

因此,对于
2015
,它返回
2015-1900
,即
115
。但是,
getYear
不推荐使用,请改用。(这确实返回了
2015

:

getMonth()
方法根据本地时间返回指定日期中的月份,作为一个基于零的值(其中零表示一年中的第一个月)

因此,一月是
0
,二月是
1
,等等

:

getDay()
方法根据本地时间返回指定日期的星期几,其中
0
表示星期天

与月份基本相同,它们是零基的。
如果您想获得每月的日期,请使用

最后,原型,
\uuuuuuuuuuuuuuuuuuuuuuu
确实是你不应该碰的东西。它只不过是一个
Date
对象的骨架,其中
Date
对象将具有它的正确值。

使用
d.getFullYear()
而不是
d.getYear()


\uuuu proto\uuuu
日期
构造函数的字符串化。不是dateMonth的是正确的,因为dateMonth从0到11
Jan=0、Feb=1等。
注意,这是一个普通对象,不是日期实例。将其写入控制台调用,因为它没有时间值,所以使用NaN,因此结果是无效的日期。漂亮的复活节彩蛋你期望的
d.\uuuu proto\uuuuuu
是什么?@RobG:注意,他们已经改变了。a) 浏览器还不会采用这个b)这是一个仓促的决定,是最终定稿前的最后一个决定之一,可能是一个错误。查找第一个勘误表和ES7:-)…此外,OP可能在查找
getDate
,而不是
getDay
@Bergi:我只是在您注释时添加了它:-)
var d = new Date();
console.log(d)
// Fri Jul 10 2015 12:40:09 GMT+0530 (India Standard Time)
console.log(d.getFullYear())
// 2015
console.log(d.getDay())
5 // 5 is the number of the day so it is correct as 0 represents Sunday
console.log(d.getDate())
// 10