我是个新手,我对这个教程感到困惑。我知道(至少我认为我知道)函数getDate和get Month以及getFullYear是由JavaScript确定的预设函数。
如果将新日期(2000,0,1)作为formatDate的参数提交,为什么本教程需要这些预设函数? getDate会以某种方式与作为参数提交的数字发生冲突吗?
在功能键盘中,我理解“数字”检查数字是否小于10,如果是,则添加零,但提交给功能键的参数是什么?如何检查数字?
您能否一步一步地带我(使用简单的语言)本教程...提前谢谢
function formatDate(date) {
function pad(number) {
if (number < 10)
return "0" + number;
else
return number;
}
return pad(date.getDate()) + "/" + pad(date.getMonth() + 1) +
"/" + date.getFullYear();
}
print(formatDate(new Date(2000, 0, 1)));
答案 0 :(得分:6)
此功能可以格式化并打印日期。
打击垫功能是在小于10的数字前添加“0”(不是如你所说的那样加10)。
这允许您以dd / mm / yyyy格式打印日期。 例如。 2011年2月3日将打印为03/02/2011而不是2011年3月2日
在formatDate函数中,最后一行是返回键(.... “formatDate”函数中的“pad”函数获取每个日期部分并将其发送到填充函数以预先设置“0”以确保遵循mm / dd而不是可能发送单个数字变量 - 例如3/2 / 2011
function formatDate(date) { // date is passed here
function pad(number) { // note that this function is defined within the outer function
if (number < 10)
return "0" + number; // prepend a 0 if number is less than 10
else
return number; // if number is greater than 10, no prepending necessary
} // the pad function ends here
return pad(date.getDate()) + "/" + pad(date.getMonth() + 1) +
"/" + date.getFullYear(); // note how the pad is used around the "date" and "month" only
} // the formatDate function ends here
print(formatDate(new Date(2000, 0, 1)));
希望有助于澄清事情。
这一行:
return pad(date.getDate()) + "/" + pad(date.getMonth() + 1) +
"/" + date.getFullYear();
转换为(假设日期为23/2/2011)
return pad(23) + "/" + pad(1 + 1) + "/" + 2011;
这调用pad(23) - 并且23被替换为pad函数中的“number”变量。无需更改,返回23。
pad(1 + 1)= pad(2) - 并且2被替换为pad函数中的“number”变量。它附加一个“0”并返回“02”
所以,最后的转换是
return 23 + "/" + 02 + "/" + 2011;
并最终打印“23/02/2011”。
答案 1 :(得分:2)
这是一个关于如何以DD / MM / YYYY格式显示日期的教程。它创建一个日期,然后将其提交给以该格式返回的函数formatDate
,然后将其打印到屏幕上。
formatDate有一个名为“pad”的内部函数。这可以确保每个项目开头都有足够数量的零。例如,如果那天是2000年1月1日,那么程序员想要01/01/2000。 pad
将零添加到月和日,因为它们都小于10.它向getMonth
添加1,因为月份在Javascript日期对象中为零索引:0表示1月,1表示2月,等
getDate
,getMonth
和getFullYear
是Date
类的对象方法。如果你是面向对象编程的新手,我建议你先探索一下来理解对象。粗略地说,对象是一种数据类型,它还具有操作该数据的方法。 Date
个对象具有getDate
,getMonth
和getFullYear
对象方法,用于返回日期的这些部分。
此代码很好,但是如果您尝试进行更复杂的日期解析,则可能需要查看date.js library。
答案 2 :(得分:0)
最后一行说明了这一点:
print(formatDate(new Date(2000, 0, 1)));
它有括号,所以你需要向后读它:
(2000, 0, 1) // make a list of 3 numbers to pass to a function
Date(2000, 0, 1) // call the Date function
new Date(2000, 0, 1) // since Date is a builtin object, tell it that is is constructing a new object or you risk hard to find bugs
(new Date(2000, 0, 1)) // pass the new Date object to the formatDate function
print(formatDate(new Date(2000, 0, 1))); // pass the result of formatDate, a String object, to the print function
您会注意到formatDate函数永远不会看到这三个数字,因此它必须使用像getMonth这样的东西来解码部件。