2011-05-03 22 views
6

strtotime(), anlayabildiği ve dönüştürebileceği bir tarih formatıyla sağlayabiliyorsanız harikadır, ancak örneğin bir İngiltere tarihini doğru unix zaman damgasını verememesini verirsiniz.PHP strtotime() işlevi? PHP'de

Tarih ve saatin hangi biçimlerde geçtiğini bildiren bir biçim değişkeni kabul eden resmi veya resmi olmayan herhangi bir PHP işlevi var mı?

bunu yaparken gelmiş en yakın Sen strptime aradığınız bir date_parse_from_format() karışımı ve mktime()

// Example usage of the function I'm after 
//Like the date() function but in reverse 
$timestamp = strtotimeformat("03/05/2011 16:33:00", "d/m/Y H:i:s"); 

cevap

21

:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00'); 
echo $date->getTimestamp(); 
+0

Başka bir dize biçiminde tarih değil bir unix zaman damgası döndürmek için arıyorum. – Brady

+0

'getTimestamp' bir unix zaman damgası döndürür ... – meze

+1

Ancak' -> getTimestamp() ', bir unix zaman damgası döndürür ... – Andrew

2

, sanırım. tarihi ayrıştırmak için kullanabilirsiniz ve UNIX zaman damgası gerekiyorsa mktime'u kullanabilirsiniz.

function strotimeformat($date, $format) { 
    $d = strptime($date, $format); 
    return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'], 
       $d['tm_mon'], $d['tm_mday'], $d['tm_year']); 
} 

Bu, PHP 5.1 ve sonrası ile çalışacaktır. PHP 5.3 varsa

+0

ile - s veya . s / s değiştirebilir. Artı strptime, Windows'da uygulanmadığı için ideal bir çözüm değildir. – Brady

+0

Tamam. Cevabımı zaten bir zaman damgası vermek için bir işlevle güncelledim (hala Windows üzerinde çalışmıyor olsa da). Tabi ki bir ABD tarihine dönüştürmek için bazı alt yazı + strpos işlerini (veya + yeniden düzenle + yayılımını) gerçekleştirebilirsiniz. –

+0

Sorumlulukta da belirtildiği gibi, kodunuzu gösterdiğiniz gibi 'date_parse_from_format()' ve 'mktime()' kombinasyonlarını kullanıyorum. 'date_parse_from_format()' tüm sistemler için çalışır, ancak sadece PHP 5.3'te çalışır.> wereas strptime, önceki bir sürümde çalışır, ancak pencereler değildir. Başka bir cevap gelip gelmediğini görmek için soruyu birkaç günlüğüne açık bırakacağım. – Brady

0

strtotime ayırıcı olarak / kullanırken bir Amerikan tarih/zamanı varsayar. Bir Euro tarih/saat olduğunu düşünmek için tarih ayırıcı olarak - veya . kullanın. Hiç ben değerler dizisi için unix zaman damgası döndürür şey arıyorum, değilim basit str_replace()

+0

Soruyu oku ... Hangi strtotime yeteneğine sahip olduğunu ve nasıl çalışacağını biliyorum. Ama istediğim bu değil ... O tarihte hangi biçimin olduğunu belirten ve bir unix zaman damgası döndüren bir dize ile birlikte herhangi bir biçimde bir tarih kabul eden bir işlev soruyorum. – Brady