PHP strtotime yanlış sonuçlar dönen

3 Cevap php

strtotime ('3 Ocak 2010 ') GMT +5:30 olarak 1230993600 döndürür.

Göre this, unix zaman 1230993600 3 Ocak iken, 2009. Yani bir yıl kapalı bulunuyor.

Bu 5.2.11 yanı sıra PHP 5.2.6 üzerinde oluyor.

3 Cevap

Sorun tarih dizesi , olduğunu. Bu gibi, dize zaman öğelerinden tarihini ayırmak gibi görünüyor

echo date('Y-m-d H:i:s', strtotime('3rd January, 2010'));

iadeler

2009-01-03 20:10:00

oysa

echo date('Y-m-d H:i:s', strtotime('3rd January 2010'));

(, removed) iadeler the correct date:

2010-01-03 00:00:00

Eğer ay sonra bir virgül varsa, bu 2010 yerine yılın askeri zamanı olduğunu varsayar. Bunu yıl olarak 2010 yorumlamak istiyorsanız, virgül atlarsanız.

strtotime () yanılmaz değildir. O zaman damgası içine bir tarih İngilizce açıklamaları dönüştürmek için çalışan bir bağlamsal ayrıştırıcı. Kullandığınız biçimi uygun ayrıştırma için uygun gibi görünüyor.

Aşağıdaki örneklerde farklılıkları görebilirsiniz:

echo strtotime('3rd January,2010')."<BR>";
echo strtotime('3 January, 2010')."<BR>";
echo strtotime('January 3rd, 2010')."<BR>";
echo strtotime('January 3, 2010')."<BR>";

in sonuçları:

1231042200
1231042200
1262505600
1262505600

İlk iki son iki daha farklı bir zaman damgası döndürür. Biçimleri, son iki doğru (İngilizce-bilge) daha anlamsal, ve ben bunun yerine bunları kullanmak için çalışacağını söyledi.

EDIT

Diğer posterleri belirttiği gibi, virgül nedeniyle tarih belirteçleri sırasına tarih bölümü hakkında çözümleyici karıştırır.

echo strtotime('3rd January 2010')."<BR>";

Lütfen biçimi için doğru zaman damgası döndürür.