Php cari ayın ilk günü DateTime nesne date_modify kullanarak

7 Cevap php

Ben bu hafta Pazartesi alabilirsiniz:

$monday = date_create()->modify('this Monday');

Ben aynı kolaylıkla bu ayın 1 almak istiyorum. Bunu nasıl başarabiliriz?

Teşekkürler

7 Cevap

("Ilk gün" PHP 5.3 tanıtıldı) çalışmak için PHP 5.3 gerektirir. Aksi takdirde yukarıdaki örnekte bunu yapmak için tek yoldur:

<?php
    $d = new DateTime('2010-01-19');
    $d->modify('first day of this month');
    echo $d->format('jS, F Y');

    // alternatively...
    echo date_create('2010-01-19')
      ->modify('first day of this month')
      ->format('jS, F Y');

PHP 5.4 + bunu yapabilirsiniz:

<?php
    echo (new DateTime('2010-01-19'))
      ->modify('first day of this month')
      ->format('jS, F Y');

İşte ben ne kullanın.

Ayın ilk günü:

date('Y-m-01');

Ayın son günü:

date('Y-m-t');

Bu ihtiyacınız olan her şey:

$week_start = strtotime('last Sunday', time());
$week_end = strtotime('next Sunday', time());

$month_start = strtotime('first day of this month', time());
$month_end = strtotime('last day of this month', time());

$year_start = strtotime('first day of January', time());
$year_end = strtotime('last day of December', time());

echo date('D, M jS Y', $week_start).'<br/>';
echo date('D, M jS Y', $week_end).'<br/>';

echo date('D, M jS Y', $month_start).'<br/>';
echo date('D, M jS Y', $month_end).'<br/>';

echo date('D, M jS Y', $year_start).'<br/>';
echo date('D, M jS Y', $year_end).'<br/>';

Çirkin, (ve yukarıdaki yöntem çağrısı kullanmak değil) ama çalışır:

echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));   

Php 5.2 kullanabilirsiniz:

<? $d = date_create();
print date_create($d->format('Y-m-1'))->format('Y-m-d') ?>

Şu anda bu çözüm kullanıyorum:

$firstDay = new \DateTime('first day of this month');
$lastDay = new \DateTime('last day of this month');

Ben üzerine geldi tek sorun garip zaman ayarlı olmasıdır. Ben arama arabirimi için doğru aralığı gerekli ve ben bu ile sona erdi:

$firstDay = new \DateTime('first day of this month 00:00:00');
$lastDay = new \DateTime('first day of next month 00:00:00');

Bunu şöyle yapabilirsiniz:

$firstday = date_create()->modify('first day January 2010');