2016-03-21 13 views
-1

: aşağıdaki hatayı alıyorumPHP tarih saat nesne biçimini şu PHP kodu çalıştırdığınızda

$this_year_start = strtotime(new DateTime("first day of this year")->format('d/m/Y')); 
$this_year_end = strtotime(new DateTime("last day of this year")->format('d/m/Y')); 

:

PHP Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/admin/data.php on line 164 

Ben bu yılki başlangıç ​​unix zaman olsun istiyorum ve bu yılın sonu. Ancak bu, bazı sorun formatına sahip gibi görünüyor ve unix zamanına dönüştürülmesini sağlıyor.

+0

ama şüphe “Bu yılın ilk günü” argüman olarak kabul edildi. – fusion3k

cevap

1

strtotime() bir Unix zaman damgası çıktılar - tek ihtiyacınız olan dönüştürülecek dizedir.

"Dün" gibi strtotime() ile tarih veya "15 Mart 1991" gibi bir tarih için metin biçiminde kullanabilirsiniz.

$this_year_start = strtotime('Jan 01'); 
$this_year_end = strtotime('Dec 31'); 

Bu iki değer olacaktır çıktı:

sadece strtotime() dizesinde "Jan 01" ve "31 Ara" koymak böylece, başlangıç ​​ve bitiş tarihi bilmek, cari yıl almak için :

$this_year_end = strtotime("Dec 31") + (60 * 60 * 24) - 1; 
: Eğer gelecek yıl öncesindeki son saniye yapmak istiyorsa

bitiş tarihi için

1451624400

1483160400

, sen ona ikinci az birini bir gün ekleyebilir

1

Yıl, 1 Ocak'ta 00: 00.00'da başlar ve 31 Aralık'ta 23: 59.59'da sona erer.

// mktime(hour, minute, second, month, day, year) 
$this_year_start = mktime(0, 0, 0, 1, 1, date('Y')); 
$this_year_end = mktime(23, 59, 59, 12, 31, date('Y')); 
-1

Bu

$s = new DateTime("first day of this year"); 
$l = new DateTime("last day of this year"); 

echo 'First Day = ' . $s->format('d/m/Y'). PHP_EOL; 
echo 'Last Day = ' . $l->format('d/m/Y'). PHP_EOL; 
echo 'First Timestamp = ' . $s->getTimestamp(). PHP_EOL; 
echo 'Last Timestamp = ' . $l->getTimestamp(). PHP_EOL; 

Ve çıkışları çalışır: Biz damgası (yani saniye kullanır) gibi bir cevap gerek olarak

Yani doğruluk için, sen de kat daha fazla geçerlidir böyle bir şey yapması gerektiğini

First Day = 01/01/2016 
Last Day = 31/12/2016 
First Timestamp = 1451606400 
Last Timestamp = 1483142400 

Tabii ki hepsini bir arada çalıştırmak isterseniz, bu sizin zaman damgalarınızı üretecektir. Ancak bu eski sürümlerinde bir seçenek değildir

$this_year_start = strtotime((new DateTime("first day of this year"))->format('d/m/Y')); 
          ^         ^
          |          | 

: ()

$this_year_start = (new DateTime("first day of this year"))->getTimestamp(); 
$this_year_end = (new DateTime("last day of this year"))->getTimestamp(); 
+0

Rastgele drive-by Aşağı Oy ver veya – RiggsFolly

+0

bir neden vardı, ama ben zaman damgası istiyor, bu yüzden '-> biçimi (...)' yerine '-> getTimestamp()' ile değiştirmelisiniz. –

+1

@CharlotteDunois Yea bunun farkına vardım, bu yüzden '-> getTimestamp() öğesini ekledim – RiggsFolly

2

böyle, parantez koymayı gereken yeni oluşturulan nesne satır içi erişmek istiyorsanız e kullanımı PHP. bunu yapmak için güvenli bir yol, nesne oluşturmak bir değişkene atamak, daha sonra gibi yeni oluşturulan değişken gelenler yöntemlerine erişmek için: date_create` `ile` yeni Datetime` değiştirin

$date = new DateTime("first day of this year"); 
$this_year_start = strtotime($date->format('d/m/Y'));