2013-05-30 19 views
5

PHP 5.3 kullanıyorum ve bu konuda bir çok materyal okudum ama yine de bir çözüm sunamaz.php tarihinden önce 1970

kullanıyorum mysql içine excel Doğum günlerini 1945/01/10 almak istediğiniz i (im negatif bir sayı alma) burada

i denedim son çözümdür bana sonucunu vermedi çalıştı ne olursa olsun php :

$ verileri excel dosyasına sonucu

$date_of_birth = ($data->sheets[0]['cells'][$i][11] - 25569) * 86400; 

(bunun için excel okuyucu sınıfı kullanılarak im) 'dir -2207692800

burda ne yapıyorum?

+0

Nerede bu negatif değeri alabilirim: Sadece kısa yoldan almak? PHP'de veya MySQL tablosunda? Bu tür tarihleri ​​ele alabileceğinden, sütun türünün DATE olduğundan emin olun. – silkfire

+4

özür dilerim, 25569 nedir? – jimmy

+0

25569'ın nereden geldiğini ve neyin temsil edilmesi gerektiğini açıklamıyorsanız, bu soruyu cevaplamanın kesinlikle hiçbir yolu yoktur. Başlangıç ​​olarak, Excel'in kendi Epoch'u vardır ve PHP, tarihleri ​​nesne olarak ele alabilir, bu yüzden 1970, hiç de alakalı olmayabilir. –

cevap

4

Unix çağından önceki tarihler PHP'de negatif olarak gösterilir, dolayısıyla yanlış bir şey yapmazsınız.
Zaman damgalarında date time işlevlerinden herhangi birini kullandığınızda, doğru değeri alırsınız.

+1

-2207692800, 01/10/1945'e yakın bir yerde değil. -788144400 olduğunu. –

+0

Bir şey vereceğim ve ne elde ettiğimi göreceğim ... –

+0

PHP'nin ayrıca mikrosaniye veya bazı –

1

Verileri MySQL içine koymak için neden bir MSExcel tarihini (uyumsuz) bir unix zaman damgasına dönüştürmeye çalışıyorsunuz?

$qry="INSERT INTO birthdays (person, birthday) 
    VALUES ('$person', 18991231000000 + INTERVAL " 
    . $data->sheets[0]['cells'][$i][11] . " DAY)"; 

(MSExcel saklanan tamsayı değeri gün sayısı, 31 Aralık 1899 yılından bu yana ise)

+1

Sadece 29 Şubat 1900'e dikkat edin :) –

+0

@MarkBaker 1900 bir yıl değil - Excel'in bununla ilgili bir sorunu var mı? –

+0

@ ring0 - Olmadığını biliyorum, ancak MS Excel'in daha önce olduğu gibi Lotus 1-2-3'ün olduğu gibi olduğuna inanıyor (Lotus, Lotus 1-2-3 ile uyumluluğu sağlamak için bu hatayı Excel'e ekledi) –

İlgili konular