2012-04-20 10 views
8

In einem Skript, dieVersionsunterschied für strtotime ('erster Tag des letzten Monats')?

date('Y-m-d', strtotime('first day of last month')) 

in Version 5.3.10 (localhost) Ich bekomme zum Beispiel enthält, '2012-03-01'.

in Version 5.2.17 (remote Host) bekomme ich '1969-12-31'.

Gibt es einen Ausdruck, der erwartete Ergebnisse (z. B. '2012-03-01') für beide Versionen liefert?

Antwort

8

Sie sollten die mktime() Funktion:

<?php 
echo date('Y-m-d', mktime(0,0,0,date('n')-1,1,date('Y'))); //2012-03-01 
?> 

See In Action

+0

... oder 'strtotime ('-'. (Datum ('j') - 1). 'Tage -1 Monat') ' – DaveRandom

+0

Sie sollten als Antwort p posten, ich neige dazu, von strtotime wie Sie zu bleiben kann so ziemlich jede Datums-/Zeitmanipulation mit einer Funktion durchführen, die es seit PHP 3 gibt;) –

+0

Vielen Dank. Ich brauchte auch den letzten Tag, der jetzt 'date ('Ym-d', mktime (0,0,0, Datum ('n'), 0, Datum ('Y'))) – geoB

1

Das ist ein known bug von PHP 5.2.17

+0

Ohne einen Workaround? – geoB

+0

@geoB Workaround ist zu aktualisieren –

+0

Yeah PHP 5.2.x ist * waaay * veraltet, in Betracht ziehen, Ihre PHP-Version bitte zu aktualisieren. (@DaveRandom Ich bearbeitete ein paar Sekunden später) –

0
date('Y-m-d', strtotime('first day of -1 month') 

funktioniert auf PHP 7.0

Verwandte Themen