2011-01-22 7 views
10

bugünün damgası ben nasıl PHP

$dtToday = DateTime::createFromFormat('Y-m-d', date('Y-m-d')); 

ama çıkış o

die($dtToday->format('d M Y g:i:s a')); 

hala zamanım örneğin "22 Ocak 2011 04:53:59 pm" olsun denedim alabilirsiniz. Neden?

Ah ... birçok insan beni yanlış, benim kötü, ben ana noktayı unuttum işaret GÜNCELLEME. Tarihi sadece tarih bölümü ile oluşturdum, zamanı istemiyorum. o UTC, ya da bir şey kullanarak mı Yani

22 Jan 2011 12:00:00 am 
+0

Sen tarih d 'olarak iade edilmesi talep etti MY g: i: sa' öyleyse çıktıyla ilgili sorun nedir? –

+0

@Salman A, şimdiki zamanla tarihi yarattım, bu yüzden saat 12:00:00 olmasını bekler miydim? –

+0

Tamam, bir yanıt gönderdim –

cevap

11

Tamam, DateTime sınıfına aşina olmadığımı itiraf ediyorum. Ama eminim ki, zaman bölümünü sıfırlamak için kullanabileceğiniz setHour, setMinute vb. Şahsen ben mktime() fonksiyonu ile tarih oluşturmak istiyorum:

echo date("Y-m-d H:i:s", // this line is for demonstration 
    mktime(0, 0, 0)  // this generates a timestamp which can be used in most date functions 
          // first three parameters are hour, minute, second which I set to 0 
          // remaining parameters are optional 
          // infact all parameters are optional and all parameters default to corresponding portion of the *current* date/time 
); 
5

gibi bir şey Sen tarih fonksiyonu

echo date("Y-m-d H:i:s",time()); 
+4

tarih parametresi için ikinci parametre() varsayılanı zaman(), yani tarih ('Y-m-d') yeterlidir. – gregjor

+0

aslında biçimi değil, güncellemeye bakın. Temel olarak, sadece tarihin bir parçası olan DateTime'ı oluşturduktan sonra neden zaman eklediğimi soruyorum, neden hala zamanı alıyorum? Zaman dilimi olmadan tarih istiyorum –

0

ikinci parametre olarak geçerli unix zaman damgası geçirerek yapabilirsiniz beklediğiniz?

date_default_timezone_set numaralı telefon numarasını kullanarak date kullanıyorum bana bir hata verir bir PHP sürümü var. Belki bu sana yardımcı olur.

0

Bu bölümü g:i:s a kodundan silin.

Şimdi, yerel bölgenize göre biçimlendirilmiş güzel bir tarih istiyorsanız, strftime() işlevini kullanmanızı öneririz. (Oca
Y Yıl:
d (gün): 22
M (Ay)

+0

Üzgünüm, neden zaman dilimi olmadan DateTime oluşturduktan sonra, neden hala zaman alırım? –

1

Sen "22 Oca 2011 04:53:59 pm" kurallar bunlar çünkü birlikte tarihinizi biçimlendirmek alıyorsanız): 2011
gr (12 saat formatı): 4
i (dakika): 53
s (saniye): 59
bir (am/pm): pm biçimi hakkında
Be fazla Ozel yapacağınız zaman damgasının sahip olması gibi. php date belgelerinde bir zirve yapmanızı öneririm.

+0

Maalesef, zaman dilimi olmadan DateTime'ı oluşturduktan sonra neden hala zamanı alacağım? –

12

DateTime::createFromFormat belgelerine bakınız: karakteri içermiyor

biçimi ise! Daha sonra biçimi biçiminde belirtilmeyen oluşturulan sürenin bölümleri geçerli sistem saatine ayarlanacaktır.

aşağıdaki işlev çağrısını yaparsanız, sonuç alırsınız beklediğiniz:

$dtToday = DateTime::createFromFormat('!Y-m-d', date('Y-m-d')); 
5

Bugünün başlangıç ​​damgası

$today_start_ts = strtotime(date('Y-m-d', time()). '00:00:00'); 
+0

'00:00:00' olmalıdır. Boşluğu unutma. – modu

+0

Bu kabul edilen cevap olmalı. –