在java.util.Calendar,1月定义为第0个月,而不是第1个月.是否有任何具体原因?
我见过很多人对此感到困惑......
这让我昨晚感到头疼,我想了解为什么Date对象中的getDate方法基于1(返回值为1-31),而getMonth方法基于0(返回0-11).我想知道为什么同一个对象的方法存在这种不一致.
我理解为什么现在很难改变行为,但有没有任何理由这样设计就像这样?
可能重复:
从零开始的月份编号
为什么JS日期对象中的1月份为0?例如,我希望这段代码能够为2013年2月的第8期创建一个日期项目.相反,它是3月份.所有其他领域都是直观的.岁月是自然的,也是月和日的时间.
test_date = New Date(2013, 2, 8);
Run Code Online (Sandbox Code Playgroud)
这背后有什么理性吗?
好吧,我很确定这个东西一定是个bug ...我必须输入我想要的前一个月:
{
"SportId":"Horse Racing",
"Date":{$gt: new Date(2012,11,4)}
}
Run Code Online (Sandbox Code Playgroud)
解释输出:
[ 15:21:39 ]
db.Fixture.find({ "SportId" : "Horse Racing", "Date" : { "$gt" : ISODate("2012-12-04T00:00:00Z") } }).limit(50);
db.Fixture.find({ "SportId" : "Horse Racing", "Date" : { "$gt" : ISODate("2012-12-04T00:00:00Z") } }).limit(50).explain();
Run Code Online (Sandbox Code Playgroud)
谁能解释一下 - 比上面更好?现在我知道我可以解决它并不重要.但这似乎是一件非常奇怪的事情.
我在 javascript 中有这个日期变量$scope.dt,内容是Tue Jul 08 2014 00:00:00 GMT+0800 (Malay Peninsula Standard Time). 我想将其转换为返回一个字符串2014-7-8(YYYY-MM-DD)。
下面是我写的函数;
function convertDate_YYYYMMDD(d)
{
var curr_date = d.getDate();
var curr_month = d.getMonth()+1; //why need to add one?
var curr_year = d.getFullYear();
return (curr_year + "-" + curr_month + "-" + curr_date );
}
Run Code Online (Sandbox Code Playgroud)
效果很好。我不明白的是为什么我需要加1才能得到正确的结果curr_month?如果我不这样做,这个月总是会少一月。该代码有效,但我不知道为什么它有效。
有人可以建议吗?