【发布时间】:2014-02-14 03:21:01
【问题描述】:
我正在尝试在日期/时间之前显示问候语,具体取决于它是一天中的什么时间。
- 早安
- 下午好
- 晚上好
我的消息正常。
我还希望将日期和时间显示为“It is TIME on DATE”。
每当我尝试使用时间日期代码更改某些内容时,我什至无法再显示它。
任何建议都会有所帮助。
function MakeArray(n) {
this.length = n;
}
monthNames = new MakeArray(13);
monthNames[1] = "January";
monthNames[2] = "February";
monthNames[3] = "March";
monthNames[4] = "April";
monthNames[5] = "May";
monthNames[6] = "June";
monthNames[7] = "July";
monthNames[8] = "August";
monthNames[9] = "September";
monthNames[10] = "October";
monthNames[11] = "November";
monthNames[12] = "December";
dayNames = new MakeArray(8);
dayNames[1] = "Sunday";
dayNames[2] = "Monday";
dayNames[3] = "Tuesday";
dayNames[4] = "Wednesday";
dayNames[5] = "Thursday";
dayNames[6] = "Friday";
dayNames[7] = "Saturday";
function dayPart(oneDate) {
var theHour = oneDate.getHours();
if (theHour < 12) {
return "Good morning";
}
if (theHour < 18) {
return "Good afternoon";
}
return "Good evening";
}
function customDateString(oneDate) {
var theDay = dayNames[oneDate.getDay() + 1],
theMonth = monthNames[oneDate.getMonth() + 1],
theYear = oneDate.getYear();
theYear += (theYear < 100) ? 1900 : 0;
return theDay + ", " + theMonth + " " + oneDate.getDate() + ", " + theYear;
}
var today = new Date();
alert(dayPart(today) + "." + customDateString(today));
开启jsFiddle
【问题讨论】:
-
您的
constructor中不需要return this;。在 javascript 数组索引中,从0开始,如果您想在自己的方法上使用任何通用方法,那么您也应该考虑这一点。所以你的长度应该是13和8,因为0是hole在你的sparse数组中。 -
感谢您的帮助。我不确定输出格式哪里出错了。我还需要在那里添加时间,但我做到了这一点,我尝试做出的任何改变最终都会弄乱我的输出。这对我来说是全新的,所以只是想弄清楚我的更改如何影响其余部分。
-
theYear += (theYear < 100) ? 1900 : 0;背后的基本原理是什么? -
另一个小提示,jsFiddle 是一个很棒的游乐场。而且MDN有很好的文档Date- 看看getFullYear
-
对于小于 1900 的年份,getYear 返回的值小于 0。例如,如果年份为 1800,则 getYear 返回 -100。我无法让年份显示 4 位数,所以做了一些 youtube 研究并得到了。这对我来说没有意义,但它有效。
标签: javascript date date-formatting