Timestamp javascript tarih dize ayrıştırma.

3 Cevap php

Ben bir timestamp bir javascript tarih dizesi ayrıştırmak zorunda. Tarih dize TZ bilgi varsa, neden) (setTimezone ile DateTime kurucudaki ve yine bir TZ nesnesi kaynağı var mı? Tarih TZ bilgi farkında olduğunu bunu yapmak için kolay bir yolu var mı?

$s = 'Thu Mar 11 2010 13:00:00 GMT-0500 (EST)';
$dt_obj = new DateTime($s, new DateTimeZone('America/New_York')); /* why? the TZ info is in the date string */

// again
$dt_obj->setTimezone(new DateTimeZone('UTC'));

echo 'timestamp  ' , $dt_obj->getTimestamp(), '<br>';

3 Cevap

Eğer gerçekten orada koymak zorunda mı?

Sadece bu kullanamazsınız:

$s = 'Thu Mar 11 2010 13:00:00 GMT-0500 (EST)';
$dt_obj = new DateTime($s);

Not: ikinci parametre DateTime::__construct is optionnal : its default value is null


And, later, you can do :

var_dump($dt_obj->getTimestamp());
var_dump($dt_obj->getTimezone()->getName());

Ve alırsınız:

int 1268330400
string '-05:00' (length=6)

EST ise Eastern Time Zone, ben bu kadar gibi, tamam herhalde UTC-5?


As a sidenote : I'm in France, which is at UTC+1 ; so it doesn't seem that my local timezone has any influence

Hayatınızı kolaylaştıracak & Make Sadece strtotime kullanın ():

$timestamp = strtotime('Thu Mar 11 2010 13:00:00 GMT-0500 (EST)');

Tamam, burada anlaşma. Bu tarih dize TZ farkındadır. Sadece date_default_timezone_set kullanarak her şeyi () için varsayılan zaman dilimini ayarlayın. Sadece ayarlanmalıdır - ne fark etmez.

//date_default_timezone_set('America/New_York');
date_default_timezone_set('UTC');

$s = 'Thu Mar 11 2010 13:00:00 GMT-0500 (EST)';
$dt_obj = new DateTime($s);
echo 'timestamp  ' , $dt_obj->getTimestamp(), '<br>';
/* 1268330400 */

$s = 'Thu Mar 11 2010 13:00:00 GMT-0800 (PST)';
$dt_obj = new DateTime($s);
echo 'timestamp  ' , $dt_obj->getTimestamp(), '<br>';   
/* 1268341200 <- different, good */

Bir çok daha kolay:

$s = 'Thu Mar 11 2010 13:00:00 GMT-0500 (EST)';
$dt_obj = new DateTime($s, new DateTimeZone('America/New_York')); 
$dt_obj->setTimezone(new DateTimeZone('UTC'));
echo 'timestamp  ' , $dt_obj->getTimestamp();
/* 1268330400 */