JavaScript根据用户的当前时间输出文本

Mik*_*rem 17 javascript string time text

我不懂JavaScript,但我熟悉以下说明.我知道一点PHP.

我正在寻找一个JS,它将根据用户的当前时间为我的标题输出特定的文本字符串.

例如:

12:00AM - 12:00PM - Good Morning!  
12:00PM - 6:00PM - Good Afternoon!  
6:00PM - 12:00AM - Good Evening!
Run Code Online (Sandbox Code Playgroud)

Chi*_*e G 47

试试以下Javascript代码:

var today = new Date()
var curHr = today.getHours()

if (curHr < 12) {
  console.log('good morning')
} else if (curHr < 18) {
  console.log('good afternoon')
} else {
  console.log('good evening')
}
Run Code Online (Sandbox Code Playgroud)


Der*_*會功夫 9

var data = [
    [0, 4, "Good night"], 
    [5, 11, "Good morning"],          //Store messages in an array
    [12, 17, "Good afternoon"],
    [18, 24, "Good night"]
],
    hr = new Date().getHours();

for(var i = 0; i < data.length; i++){
    if(hr >= data[i][0] && hr <= data[i][1]){
        console.log(data[i][2]);
    }
}
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/DerekL/we8Ty/


小智 7

我知道这是一个旧线程,我只是为需要简单解决方案的任何人分享这两行代码:)

var hour = new Date().getHours();
console.log("Good " + (hour<12 && "Morning" || hour<18 && "Afternoon" || "Evening"))
Run Code Online (Sandbox Code Playgroud)


Air*_*475 6

这只是 Derek 解决方案的一个小变化????以上。
我觉得数组比一堆if语句更干净。
如果您向后计算小时数,则不需要开始结束小时数。
此外,一旦你匹配,我添加了一个break;提前踢出。

var data = [
    [22, 'Working late'],
    [18, 'Good evening'],
    [12, 'Good afternoon'],
    [5,  'Good morning'],
    [0,  'Whoa, early bird']
],
hr = new Date().getHours();
for (var i = 0; i < data.length; i++) {
    if (hr >= data[i][0]) {
        console.log(data[i][1])
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)