XML zaman PHP dizeleri Construct

3 Cevap php

Ben Bir Zamanlar içine aşağıdaki XML dönüştürmek çalışıyorum:

 <time hour="18" minute="05" timezone="Eastern" utc-hour="-4" utc-minute="00" />

Ben SimpleXML kullanarak XML ayrıştırma ve bir sınıfta olduğunu saklamak ediyorum. Ben de aşağıdaki yazdırarak çalıştı:

print strtotime($x->time->attributes()->hour . ":" . $x->time->attributes()->minute) . "<br>\n";

O baskı aldığım sonuçlar şöyle baktı:

1249254300

Ben bekliyordum sonuç ya 18:05 veya 6:05 PM olacağını tahmin

Bunu ben bekliyordum tarzına dönüştürmek için olsun herhangi bir yolu var mı? Ben ucuna dilimini eklemek için olsaydı da, o anlamaya için herhangi bir yolu var mı?

3 Cevap

Ben burada strtotime kullanarak karşı tavsiye ederiz. Bunun yerine try mktime.

$time=mktime($x->time->attributes()->hour,$x->time->attributes()->minute,0,0,0,0)

Ayrıca (ne çıktı unix gösterimi yapıldı) zaman damgası biçimlendirmek gerekir. Sen date fonksiyonu ile yapabilirsiniz.

date("H:i", $time);

Bir form strtotime() (zaman dilimi bilgi dahil olmak üzere) anlar haline getirebilir

<?php
$x = new SimpleXMLElement('<x>
    <time hour="18" minute="05" timezone="Eastern" utc-hour="-4" utc-minute="00" />
</x>');

$ts = sprintf('%02d:%02d %+03d%02d', $x->time['hour'], $x->time['minute'], $x->time['utc-hour'], $x->time['utc-minute']);
$ts = strtotime($ts);
echo gmdate(DateTime::RFC1123, $ts), "\n", date(DateTime::RFC1123, $ts);

Benim yerel timezone CET / TSİ (UTC Bu durumda +2), bu nedenle komut dosyası yazdırır

Mon, 03 Aug 2009 22:05:00 +0000
Tue, 04 Aug 2009 00:05:00 +0200

strToTime function dize biçiminde bir tarih veya zaman tanımak, ve sonra bir Unix zaman damgası (Unix dönem 1 Ocak 1970 gece yarısı, UTC olmak Unix Epoch beri saniye sayısı () dönüştürecektir .

Peki, ne yapmanız gereken strtotime fonksiyonunun resul almak ve bir daha insan okunabilir şekilde bunları biçimlendirmek için date fonksiyonunu kullanmaktır

//24 hour clock
print date(
      'H:i',
      strtotime($x->time->attributes()->hour . ":" . $x->time->attributes()->minute) . "<br>\n");

//12 hour clock
print date(
      'h:i a',
      strtotime($x->time->attributes()->hour . ":" . $x->time->attributes()->minute) . "<br>\n");

Tam biçimlendirme seçenekleri bulunabilir the date entry on php.net