【问题标题】:How do I get custom message within Date / Time?如何在日期/时间内获取自定义消息?
【发布时间】:2014-02-14 03:21:01
【问题描述】:

我正在尝试在日期/时间之前显示问候语,具体取决于它是一天中的什么时间。

  1. 早安
  2. 下午好
  3. 晚上好

我的消息正常。

我还希望将日期和时间显示为“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 开始,如果您想在自己的方法上使用任何通用方法,那么您也应该考虑这一点。所以你的长度应该是138,因为0hole在你的sparse数组中。
  • 感谢您的帮助。我不确定输出格式哪里出错了。我还需要在那里添加时间,但我做到了这一点,我尝试做出的任何改变最终都会弄乱我的输出。这对我来说是全新的,所以只是想弄清楚我的更改如何影响其余部分。
  • theYear += (theYear &lt; 100) ? 1900 : 0; 背后的基本原理是什么?
  • 另一个小提示,jsFiddle 是一个很棒的游乐场。而且MDN有很好的文档Date- 看看getFullYear
  • 对于小于 1900 的年份,getYear 返回的值小于 0。例如,如果年份为 1800,则 getYear 返回 -100。我无法让年份显示 4 位数,所以做了一些 youtube 研究并得到了。这对我来说没有意义,但它有效。

标签: javascript date date-formatting


【解决方案1】:

试试这个作为你的函数:

function customDateString(oneDate) {
    var theDay = dayNames[oneDate.getDay() + 1]
    var theMonth = monthNames[oneDate.getMonth() + 1]
    var theYear = oneDate.getFullYear()
    theYear += (theYear < 100) ? 1900 : 0
    return 'It is ' + new Date().timeNow() + ' on ' + theMonth + " " + oneDate.getDate() + ", " + theYear + '.  ';

}

有了这个原型:

    Date.prototype.timeNow = function () {
     return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
}

Demo

getFullYear 返回一个四位数的年份,而不仅仅是 getYear,例如,14 在年份 2014 中返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2021-09-20
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多