Ich habe diesen PHP-Code:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
Aber es kehrt December
eher zurück als August
.
$result["month"]
ist gleich 8, also sprintf
fügt die Funktion ein hinzu 0
, um es zu machen 08
.
strtotime
hat keine Ahnung, was Sie versuchen zu tun. Alternativ können Sie einfach einen Schalter für so etwas verwenden.strtotime
aber keine Ahnung was "8" bedeutet.strtotime
analysiert vollständige Zeitstempel wie "2012-05-12 08:43:12". Was bedeutet "8" in diesem Zusammenhang?echo date( "F", time() );
? Zum Beispielecho date( "F", strtotime("2019-03-09") );
wird "März"Antworten:
Der empfohlene Weg, dies zu tun:
Heutzutage sollten Sie DateTime-Objekte wirklich für jede Datums- / Zeitmathematik verwenden. Dies erfordert eine PHP-Version> = 5.2. Wie in Glavićs Antwort gezeigt , können Sie Folgendes verwenden:
Das
!
Formatierungszeichen wird verwendet, um alles auf die Unix-Epoche zurückzusetzen . Dasm
Formatzeichen ist die numerische Darstellung eines Monats mit führenden Nullen.Alternative Lösung:
Wenn Sie eine ältere PHP-Version verwenden und derzeit kein Upgrade durchführen können, können Sie diese Lösung verwenden. Der zweite
date()
Funktionsparameter akzeptiert einen Zeitstempel, mit dem Sie einenmktime()
erstellen können:Wenn Sie den dreistelligen Monatsnamen mögen
Mar
, ändern SieF
zuM
. Die Liste aller verfügbaren Formatierungsoptionen finden Sie in der Dokumentation zum PHP-Handbuch .quelle
Nur weil jeder die Funktionen strtotime () und date () verwendet, zeige ich das DateTime- Beispiel:
quelle
DateTime::createFromFormat('m|', $result['month']);
nur fehlende Felder zurücksetzen.strftime()
.Verwendung
mktime()
:Siehe das PHP-Handbuch: http://php.net/mktime
quelle
"m"
gibt den Monat als zweistellige Zahl als zurückstring
. zB Januar = 01, Februar = 02strtotime
erwartet ein Standard-Datumsformat und gibt einen Zeitstempel zurück.Sie scheinen
strtotime
eine einzelne Ziffer zu übergeben, um ein Datumsformat auszugeben.Sie sollten verwenden,
mktime
welches die Datumselemente als Parameter verwendet.Ihr vollständiger Code:
Die Funktion mktime erfordert jedoch keine führende Null zur Monatszahl, sodass die erste Zeile völlig unnötig ist und
$result["month"]
direkt an die Funktion übergeben werden kann.Dies kann dann alles in einer einzigen Zeile kombiniert werden, wobei das Datum inline wiedergegeben wird.
Ihr überarbeiteter Code:
...
quelle
date("F", mktime(null, null, null, 2));
kehrtMarch
stattFebruary
.mktime
wird der aktuelle Tag verwendet. Heute ist der 31 .. Was ist der 31. Februar? :)1
wird nicht als 5. Parameter für bereitgestellt,mktime
sondern als 3. Parameter, fürdate
den keine erwarteten Ergebnisse erzielt werdenUm die Konvertierung in Bezug auf das aktuelle Gebietsschema durchzuführen, können Sie die folgende
strftime
Funktion verwenden:date
respektiert das Gebietsschema nicht,strftime
tut es.quelle
$monthName = utf8_encode(strftime('%B', mktime(0, 0, 0, $monthNumber)));
, um akzentuierte Zeichen wie in 'Août'Wenn Sie nur eine Reihe von Monatsnamen vom Anfang des Jahres bis zum Ende möchten, z. B. um eine Dropdown-Auswahl zu füllen, würde ich nur Folgendes verwenden:
quelle
Es gibt viele Möglichkeiten, einen Monat von der angegebenen Nummer zu drucken. Wählen Sie eine Suite für Sie.
1. Funktion date () zusammen mit Parameter 'F'
Codebeispiel:
2. Durch Erstellen eines PHP-Datumsobjekts mit createFromFormat ()
Codebeispiel
3. Funktion strtotime ()
4. mktime () Funktion
5. Mit jdmonthname ()
quelle
nach Bedarf anpassen
quelle
Wenn Sie die Monatsnummer haben, können Sie zuerst ein Datum mit dem Standarddatum 1. und dem Standardjahr des aktuellen Jahres erstellen und dann den Monatsnamen aus dem Erstellungsdatum extrahieren:
Dieser Code setzt voraus, dass Sie Ihre Monatsnummer in $ i gespeichert haben
Hoffe das hilft jemandem
quelle
Ich fand dies auf https://css-tricks.com/snippets/php/change-month-number-to-month-name/ und es funktionierte perfekt.
quelle
Das ist trivial einfach. Warum machen so viele Leute so schlechte Vorschläge? @Bora war am nächsten, aber dies ist das robusteste
Dies ist der Weg, um es zu tun
quelle
Ich verwende derzeit die folgende Lösung, um das gleiche Problem anzugehen:
Weitere Informationen zum festgelegten Gebietsschema finden Sie unter http://php.net/manual/en/function.setlocale.php
Weitere Informationen zu strftime finden Sie unter http://php.net/manual/en/function.strftime.php
Ucfirst()
wird verwendet, um den ersten Buchstaben in einer Zeichenfolge groß zu schreiben.quelle
quelle
Sie müssen Felder mit
strtotime
oder festlegenmktime
Mit
mktime
nur Monat eingestellt. Probier diese:quelle
Verwenden Sie den obigen Code
quelle
Dies für alle Anforderungen der Datums- / Zeitkonvertierung
quelle
quelle
Ich denke, die Verwendung von cal_info () ist der einfachste Weg, um von Zahl zu Zeichenfolge zu konvertieren.
Siehe die Dokumente für cal_info ()
quelle
Verwenden:
quelle
gregoriantojd
undjdmonthname
befinden sich in der Kalendererweiterung und erfordern das Kompilieren von PHP mit, es--enable-calendar
sei denn, Sie arbeiten unter Windows.Ich weiß, dass diese Frage vor einiger Zeit gestellt wurde, aber ich nahm an, dass jeder, der nach dieser Antwort suchte, wahrscheinlich nur versuchte, das Schreiben der gesamten if / else-Anweisungen zu vermeiden. Deshalb habe ich sie für Sie geschrieben, damit Sie sie kopieren / einfügen können. Die einzige Einschränkung bei dieser Funktion ist, dass sie sich auf die tatsächliche Nummer des Monats bezieht, nicht auf eine 0-indizierte Zahl, also Januar = 1, nicht 0.
quelle
Um den Monatsnamen durch Angabe der Monatsnummer zu erhalten
Wo 'F' Ihnen den Monatsnamen zurückgibt, z. 'Kann'
quelle
So habe ich es gemacht
kehrt zurück
30 June 2019
quelle
Ein einfacher Trick hier können Sie die strtotime () -Funktion verwenden, die je nach Bedarf funktioniert, eine Konvertierungsnummer in einen Monatsnamen.
1.Wenn Sie ein Ergebnis in Jan, Feb und Mar wünschen, versuchen Sie es unter einem mit dem 'M' als Parameter innerhalb des Datums.
Ausgabe: Mai
/ 2. Sie können versuchen, mit 'F' anstelle von 'M' den vollständigen Monatsnamen als Ausgabe Januar Februar März usw. zu erhalten.
Ausgabe: Januar
quelle
Das extrahiert die Monate.
quelle
Verwenden Sie eine native Funktion wie
jdmonthname()
:quelle
jdmonthname(3, CAL_MONTH_GREGORIAN_LONG);
RückkehrNovember
Sie können einfach die Funktion monthname () in SQL verwenden.
SELECT Monatsname (Datumsspalte) aus der Tabellengruppe nach Monatsname (Datumsspalte)
quelle