2013-09-25 19 views
6

Ho due ora nel formato "HH: MM" Voglio confrontarli Ho il seguente codice per ottenere il tempo di adesso nel mio formato:Come confrontare il tempo in javascript?

current_time = new Date(); 
hour = current_time.getHours(); 
minute = current_time.getMinutes(); 
if(hour<10){hour='0'+hour} if(minute<10){minute='0'+minute} 
my_time = hour+':'+minute; 

E questo codice è quello di ottenere il tempo dopo sottraendo la differenza GMT:

d = new Date() 
var n = d.getTimezoneOffset(); 
var n1 = Math.abs(n); 
var difference = (n1/60); 
my_time = my_time - (0+difference); 

Ora il valore di my_time deve essere confrontato con il valore di match_time:

match_time = 10:00;//for example 
if(my_time > match_time) 
{ 
    alert('yes'); 
} 
else 
{ 
    alert('No'); 
} 

come posso confrontare quei valori come ti io quando sono una stringa ???

risposta

4
Date.parse('25/09/2013 13:31') > Date.parse('25/09/2013 9:15') 

EDIT:

nota che si sta parsing di un data arbitraria che non sei interessato a, ha solo bisogno di essere lo stesso su entrambi i lati.

+0

Date.parse dipende dall'implementazione e in questo caso, tornerà NaN in alcuni browser (ad esempio Safari). L'OP può confrontare le stringhe direttamente come stringhe. – RobG

1
if(Date.parse('01/01/2011 10:20:45') == Date.parse('01/01/2011 5:10:10')) { 
    alert('same'); 
    }else{ 

    alert('different'); 

    } 

The 1st January is an arbitrary date, doesn't mean anything. 
9

utilizzare Oggetti data. Date.setHours() consente di specificare ora, minuti, secondi

var currentD = new Date(); 
var startHappyHourD = new Date(); 
startHappyHourD.setHours(17,30,0); // 5.30 pm 
var endHappyHourD = new Date(); 
endHappyHourD.setHours(18,30,0); // 6.30 pm 

console.log("happy hour?") 
if(currentD >= startHappyHourD && currentD < endHappyHourD){ 
    console.log("yes!"); 
}else{ 
    console.log("no, sorry! between 5.30pm and 6.30pm"); 
} 
+0

So che la domanda chiede come confrontare quando le stringhe, ma penso che questa sia una soluzione migliore per il problema generale. –

0

Se ho avuto abbastanza ripetizioni a votare per soluzione @Gabo Esquivel. Per giorni ho cercato e testato soluzioni e questo è l'unico che ha funzionato per me.

Avevo bisogno di un test di dichiarazione condizionale se l'ora corrente è 0830 e, in tal caso, fare qualcosa. La mia dichiarazione if non funzionava, quindi avevo bisogno di altri esempi con cui lavorare.

//Business Hours: Saturday 8:30am-12pm; highlight Saturday table row. 
function showSaturdayHours() { 
    var today = new Date(); 
    var weekday = today.getDay(); 
    var saturdayOpen = new Date(); 
    saturdayOpen.setHours(8, 30, 0); 
    var saturdayClose = new Date(); 
    saturdayClose.setHours(12, 0, 0); 

if (weekday == 6) { 
    $('#saturday-row').addClass('row-blue'); //highlight table row if current day is Saturday. 
    if (today >= saturdayOpen && today < saturdayClose) { 
     document.getElementById('saturday-open').innerHTML = 'Open'; 
    } else { 
     document.getElementById('saturday-open').innerHTML = 'Closed'; 
    } 
    } 
} 

Business Hour Tabella: JSFiddle

Problemi correlati