2012-11-06 14 views
6

Non conosco JavaScript, ma ho familiarità con le seguenti istruzioni. Conosco un po 'di PHP.JavaScript per generare il testo in base all'orario corrente dell'utente

Sto cercando un pezzo di JS che generi una particolare stringa di testo per la mia intestazione, in base all'ora corrente dell'utente.

Ad esempio:

12:00AM - 12:00PM - Good Morning! 
12:00PM - 6:00PM - Good Afternoon! 
6:00PM - 12:00AM - Good Evening! 

risposta

20

Prova seguente pezzo di codice 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') 
} 
+0

Questo funziona per me. Ovviamente ho dovuto cambiare console.log in document.write per farlo uscire in uscita sulla pagina. Ho scelto questo perché è più semplice e funziona per i miei bisogni, anche se le risposte di altri in basso potrebbero essere più corrette. –

1

Prova questa js codice, questo dovrebbe funzionare ..

var dt = new Date().getHours(); 
if (dt >= 0 && dt <= 11){ 
console.log('GM') 
}else if (dt >= 12 && dt <= 17){ 
console.log('Good Afternoon!') 
}else { 
console.log('GE') 
} 
+0

Cosa succede se hai un sacco di 'tempo' e' testo'? Il codice sarà così disordinato. –

0

non ho ancora testato ma dovrebbe funzionare:

function getText() 
{ 
    var hour = new Date().getHours(); 
    var minute = new Date().getMinutes(); 
    if (hour >= 0 && hour < 12) 
    return 'Good Morning!'; 
    else if (hour == 12 && minute == 0) 
    return 'Good Morning!'; 
    else if (hour == 12 && minute > 0) 
    return 'Good Afternoon!'; 
    else if (hour == 6 && minute == 0) 
    return 'Good Afternoon!'; 
    else if (hour == 6 && minute > 0) 
    return 'Good Evening!'; 
    else if (hour > 12 && hour < 6) 
    return 'Good Afternoon!'; 
    else if (hour > 6 && hour < 12) 
    return 'Good Evening'; 
} 
5
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]); 
    } 
} 

Demo: http://jsfiddle.net/DerekL/we8Ty/

+0

Sono le 12:21 dall'orologio del mio computer, eppure mi ha detto buongiorno. È possibile che solo tronca le ore così, forse la matrice dovrebbe dire 0, 11? Non ne ho idea, semplicemente suggerendo. –

+0

@MikeMeldrem - Sono abbastanza sicuro che dovrebbe essere '[0,11]' ... Non ho idea del motivo per cui ho messo '[0,12]' prima. –

1

ne dite:

var time = new Date().getHours(); 
    ,greeting = 'Good '+ (time < 12 ? 'Morning' : 
         time < 18 ? 'Afternoon' : 'Evening'); 
//=> new Date('2012/11/06 13:10') => 'Good Afternoon' 
//=> new Date('2012/11/06 10:33') => 'Good Morning' 
//=> new Date('2012/11/06 19:23') => 'Good Evening' 

o aumentare Date

Date.prototype.greeting = function(){ 
    var time = this.getHours(); 
    return 'Good '+ (time<12 ? 'Morning' : time<18 ? 'Afternoon' : 'Evening'); 
}; 
new Date('2012/11/06 19:23').greeting() //=> 'Good Evening' 

see jsfiddle

0
<script type="text/javascript"> 

    var myDate = new Date(); 
    var name = window.prompt("Please enter your name: "); 

    if (myDate.getHours() < 12) { 
     document.write("Good Morning " +name); 
    } 
    else if(myDate.getHours() >=12 && myDate.getHours() <=17){ 
     document.write("Good Afternoon " +name); 
    } 
    else if (myDate.getHours() > 17 && myDate.getHours() <=24) { 
     document.write("Good Evening " +name); 
    } 
    else 
    { 
     document.write("Good Night"); 
    } 
</script> 
0

Questa è solo una piccola variante della soluzione di Derek 朕 會 功夫 sopra.
Ho sentito che l'array è più pulito di un gruppo di istruzioni if.
Se si lavora indietro le ore, non è necessario un inizio E ora di fine.
Inoltre, una volta effettuata una partita, ho aggiunto uno break; per uscire presto.

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; 
    } 
} 
Problemi correlati