2013-02-14 6 views

risposta

24

È necessario utilizzare lo stesso fuso orario per un confronto sano:

echo strtotime("2011-01-26 13:51:50 GMT"); 
// 1296049910 

var d = Date.parse("2011-01-26 13:51:50 GMT")/1000; 
console.log(d); 
// 1296049910 

Aggiornare

Secondo la norma, sono solo RFC 2822 date formattate ben supportate:

Date.parse("Wed, 26 Jan 2011 13:51:50 +0000")/1000 

per generare un tale data, è possibile utilizzare gmdate('r') in PHP:

echo gmdate('r', 1296049910); 
+0

In arrivo 'NaN' nel browser Mozilla. – Chinmay235

5

JavaScript utilizza millisecondi come un timestamp, mentre PHP usa secondi. Di conseguenza, si ottiene date molto diverse, in quanto è fuori di un fattore 1000.

campione

echo date('Y-m-d', TIMESTAMP/1000);

di risposta alle osservazioni

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 

    function toTimestamp(year,month,day,hour,minute,second) 
    { 
     var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second)); 
     return datum.getTime()/1000; 
    } 

    $(function() 
    { 
     console.log(toTimestamp(2011,01,26,13,51,50)); 

    }); 

</script> 

<?php 

echo $the_date = strtotime("2011-01-26 13:51:50");
+1

Questa non è l'unica differenza :) –

+0

@jack so che anche TIMEZONE conta ma do solo una seconda differenza perché prima era già stata data da te –

+0

thankx dipesh bhai ji ... –

2

strtotime() e Date.parse() resa Timestamp UNIX con una risoluzione di secondi e millisecondi rispettivamente. Tuttavia, se le informazioni sul fuso orario non sono presenti nella stringa di input, viene utilizzata l'ora locale. Quindi la stringa di input 2011-01-26T13:51:50 potrebbe produrre output diversi su macchine diverse anche se PHP (o JavaScript) viene utilizzato per generare i timestamp su entrambe le macchine.

La soluzione è specificare esplicitamente il fuso orario nelle stringhe. Questo dovrebbe produrre lo stesso risultato su qualsiasi macchina:

Date.parse("Jan 26, 2011 13:51:50 GMT+0500")/1000; // 1296031910 
strtotime("Jan 26, 2011 13:51:50 GMT+0500");   // 1296031910