Je peux avoir lundi cette semaine avec:
$monday = date_create()->modify('this Monday');
Je voudrais avoir avec la même facilité le 1er de ce mois. Comment puis-je y arriver?
Merci
Requiert le fonctionnement de PHP 5.3 ("premier jour de" est introduit dans PHP 5.3). Sinon, l'exemple ci-dessus est le seul moyen de le faire:
<?php
// First day of this month
$d = new DateTime('first day of this month');
echo $d->format('jS, F Y');
// First day of a specific month
$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');
Dans PHP 5.4+, vous pouvez faire ceci:
<?php
// First day of this month
echo (new DateTime('first day of this month'))->format('jS, F Y');
echo (new DateTime('2010-01-19'))
->modify('first day of this month')
->format('jS, F Y');
Si vous préférez un moyen concis de procéder ainsi et que vous avez déjà l'année et le mois en valeurs numériques, vous pouvez utiliser date()
:
<?php
echo date('Y-m-01'); // first day of this month
echo date("$year-$month-01"); // first day of a month chosen by you
Voici ce que j'utilise.
Premier jour du mois:
date('Y-m-01');
Dernier jour du mois:
date('Y-m-t');
C'est tout ce dont vous avez besoin:
$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/>';
J'utilise actuellement cette solution:
$firstDay = new \DateTime('first day of this month');
$lastDay = new \DateTime('last day of this month');
Le seul problème sur lequel je suis tombé, c’est qu’un temps étrange se prépare. J'avais besoin d'une plage correcte pour notre interface de recherche et je me suis retrouvé avec ceci:
$firstDay = new \DateTime('first day of this month 00:00:00');
$lastDay = new \DateTime('first day of next month 00:00:00');
J'utilise une façon folle de faire cela en utilisant cette commande
$firstDay=date('Y-m-d',strtotime("first day of this month"));
$lastDay=date('Y-m-d',strtotime("last day of this month"));
C'est tout
En PHP 5.2, vous pouvez utiliser:
<? $d = date_create();
print date_create($d->format('Y-m-1'))->format('Y-m-d') ?>
Moche (et n'utilise pas l'appel de méthode ci-dessus) mais fonctionne:
echo 'First day of the month: ' . date('m/d/y h:i a',(strtotime('this month',strtotime(date('m/01/y')))));
Vous pouvez le faire comme ça:
$firstday = date_create()->modify('first day January 2010');
J'utilise ceci avec un travail quotidien cron pour vérifier si je devrais envoyer un courrier électronique le premier jour d'un mois donné à mes affiliés. C'est un peu plus de lignes que les autres réponses mais solide comme un roc.
//is this the first day of the month?
$date = date('Y-m-d');
$pieces = explode("-", $date);
$day = $pieces[2];
//if it's not the first day then stop
if($day != "01") {
echo "error - it's not the first of the month today";
exit;
}
en utilisant la méthode de la date, nous devrions pouvoir obtenir le résultat . date ('N/D/l', mktime (0, 0, 0, mois, jour, année));
Par exemple
echo date('N', mktime(0, 0, 0, 7, 1, 2017)); // will return 6
echo date('D', mktime(0, 0, 0, 7, 1, 2017)); // will return Sat
echo date('l', mktime(0, 0, 0, 7, 1, 2017)); // will return Saturday