2010-09-03 17 views

cevap

2

, sen Sonra düzenlemek substr()

$timestamp = "20100902040003"; 

$year = substr($timestamp, 0, 3); 
$month = substr($timestamp, 4, 5); 
$day = substr($timestamp, 6, 7); 
$hour = substr($timestamp, 8, 9); 
$minute = substr($timestamp, 10, 11); 
$second = substr($timestamp, 12, 13); 

kullanmak zorunda olduğu eminseniz kullanarak sprintf()

$formatted_timestamp = sprintf('%s-%s-%s %s:%s:%s', $year, $month, $day, $hour, $minute, $second); 
+0

sayesinde. satırı dinamik olarak oluştururken bu işlevi foreach ifademe koyar mıyım? Teşekkürler. – cjd143SD

+0

Biçimi, G saatin sıfıra ulaşmadan yazdırılacağından sabitledim, bunun yerine H kullanmalısınız. Diziyi oluştururken ya da yazdırdığınızda işlevi çalıştırabilirsiniz, her ikisi de çalışır. – leonardys

10
$timestamp = "20100902040003"; 
echo date('Y-m-d H:i:s', strtotime($timestamp)); // output: 2010-09-02 04:00:03 
+0

@downvoter: Söz konusu şekilde bahsediyor. Bunu detaylı olarak açıklar mısınız? – NAVEED

+0

Yanlış okumamdan beri -1 ile +1 arasında değişiklik yaptı. Strtotime() 'çağrısını kaçırdım. – BoltClock

+0

@codaaddict işlevi "strtotime" bir zaman damgasına dönüştürdüğü için – Mischa

2

tüm kayıtlar içinde Girdi dosyanız YYYYMMDDHHmmss biçimindedir, dizeyi kendiniz paylaştırmaya çalışabilir ve daha sonra date() bağlantı noktasını kullanabilirsiniz. Anlamlı bir tarih biçimi oluşturmak için mktime() ile.

+0

teşekkürler. evet, tüm kayıtların aynı formatı var. bana bir örnek gösterebilir misin – cjd143SD

+1

strtotime(), "20100902040003" – nohat

+0

gibi ISO 8601 zaman damgalarını anlamıyor. Bence, "date" ve "mktime" işlevlerini tamamen atladığından, çözümün daha iyi olduğunu düşünüyorum. – BoltClock

2

Verileriniz zaten doğru biçimde oluşturulduğundan, yalnızca noktalama işareti gerektirdiğinden, tarih ayrıştırma ve tarih biçimlendirme işlevleri yerine normal bir ifade kullanabilirsiniz.

$timestamp = "20100902040003"; 
preg_replace('/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/', 
      '\1-\2-\3 \4:\5:\6', $timestamp) 

verim:

2010-09-02 04:00:03