Dönüştürme PHP tarih biçimi

4 Cevap php

İşte ne var:

$dateFormat = 'M d, Y';
$dateString = 'January 23, 2010';

Neye ihtiyacım $dateString bu yüzden bu yapabilirim bir zaman damgası:

$newFormattedDate = date('Y-m-d', $timestamp);

I strtotime işlevini kullanmaya çalıştı ama o formatını kendisi bulmaya çalışır ve her zaman çalışmıyor. Benim durumda ben tarih dizesi ve tarih biçimini de biliyoruz.

Nasıl $timestamp date fonksiyonu ile kullanım için uygun bir değere ayarlayabilirsiniz?

EDIT: Ben hem Linux ve Windows ortamlarında çalışmak için bu gerekiyor.

EDIT: çözüm PHP sürüm 4 veya daha yüksek desteklemesi gerekir

EDIT: MySQL STR_TO_DATE which takes a date string and a date format and returns Y-m-d formatlanmış tarih dize adında bir işlevi vardır. Php için eşdeğer herhangi bir fonksiyonu da benim için çalışıyor.

4 Cevap

PHP5.3 itibariyle Eğer DateTime API kullanabilirsiniz

$dt = date_create_from_format('M d, Y', 'January 23, 2010');
echo date_timestamp_get($dt);

veya OOP gösterimi ile

$dt = DateTime::createFromFormat('M d, Y', 'January 23, 2010');
echo $dt->getTimestamp();

Not DateTime PHP ->getTimestamp() ile ->format('U'), createFromFormat() için kolay bir çözüm yoktur

Alternatif bir Zend Framework dan Zend_Date kullanmak olacaktır:

$date = new Zend_Date('Feb 31, 2007', 'MM.dd.yyyy');
echo $date->get(Zend_Date::TIMESTAMP);

Benim soru anlayış ve hangi PHP mevcuttur önüne alındığında, bir yere ya da diğer beklentilerini dinlenmek gerekir.

(Zaten indirimli olan) bir 'basit' bir çözüm PHP 5.3 ve bunun mevcut araçları kullanarak zorlamak olacaktır.

Daha az basit bir çözüm (PHP 4 uyumluluğu, iyi şans ile) PHP-arazi için bu eklemeler ve liman onları ele olacaktır.

Keşif başka bir yol strtotime sizin için çalışmak ve bu sınırlamalar etrafında çalışma değil vesilelerle dikkate olacaktır.

Biçim dizeleri nasıl yaygın çeşidi vardır? Bu işlevleri / yöntemleri (bu tarih ayrıştırma yapmak için) onlar oldukça sınırlı konum sağlayan bir çözüm haritalama biçim dizeleri ile gelip mümkün olabilir.

$dateFormat = 'M d, Y'
$timestamp = strtotime($dateString);
echo date($dateFormat, $timestamp); 

i soru yanlış değil eğer yukarıdaki kodu deneyebilirsiniz ..