sql >> Database teknologi >  >> RDS >> Mysql

Gentagende begivenheder den n. ugedag i hver måned

Her er et muligt alternativ til dig. strtotime er kraftfuld, og syntaksen indeholder virkelig nyttige bits gerne omfattende relativ tid og dato formulering .

Du kan bruge den til at generere de første til og med N'te specifikke ugedage i en bestemt måned ved at bruge formatet " af ". Her er et eksempel med date_create at påberåbe en DateTime objekt, men almindelig gammel strtotime fungerer på samme måde:

php > $d = date_create('Last Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 25 2011 00:00:00
php > $d = date_create('First Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 04 2011 00:00:00
php > $d = date_create('First Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 06 2011 00:00:00
php > $d = date_create('Fourth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
php > $d = date_create('Last Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00

Det vil også løbe over måneden, hvis du beder om en ugyldig:

php > $d = date_create('Ninth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday May 01 2011 00:00:00

Bemærk, at det kun virker med ordental formulering. Du kan desværre ikke bestå "1st" eller "3rd".

Når du har brugt dette til at få fat i den rigtige n'te ugedag, kan du blot tilføje antallet af nødvendige ugedage, der skal springes over (7 for en uge, 14 for to, 21 for tre osv.) efter behov indtil den angivne slutdato eller det angivne antal af uger er gået. Endnu en gang, strtotime til undsætning ved at bruge det andet argument til at kæde relativitet sammen:

php > echo date('l F d Y H:i:s', strtotime('+14 days', strtotime('First Thursday of March 2011')));
Thursday March 17 2011 00:00:00

(Min lokale kopi accepterede også '+14 days First Thursday of March 2011' , men det føltes lidt underligt.)



  1. Flere måder at indsætte opdelte afgrænsede strenge i en kolonne

  2. DataTable med Ajax fungerer ikke godt efter brug serverSide:sand

  3. Indsæt flere rækker i SQLite-fejl (fejlkode =1)

  4. Sådan finder du dubletter i 2 kolonner ikke 1