Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
PHP: Datumsangaben
- Ersteller Virginia
- Erstellt am
Relict
Admiral
- Registriert
- Juni 2005
- Beiträge
- 7.934
$eng_datum = explode('.', $dt_datum);
$eng_datum = $eng_datum[2].'-'.$eng_datum[1].'-'.$eng_datum[0];
so ungefähr.
Achso und falls führende Nullen in jedem Fall dabei sein sollen geht auch analog sowas:
$eng_datum = sprintf("%04d-%02d-%02d", $eng_datum[2], $eng_datum[1], $eng_datum[0]);
$eng_datum = $eng_datum[2].'-'.$eng_datum[1].'-'.$eng_datum[0];
so ungefähr.
Achso und falls führende Nullen in jedem Fall dabei sein sollen geht auch analog sowas:
$eng_datum = sprintf("%04d-%02d-%02d", $eng_datum[2], $eng_datum[1], $eng_datum[0]);
Zuletzt bearbeitet:
Relict
Admiral
- Registriert
- Juni 2005
- Beiträge
- 7.934
Hmm also für diesen speziellen Fall wäre mir jetzt keine extra Funktion bekannt, die das noch weiter vereinfachen und beschleungen würde, eher für timestamps oder andere Datumsgeschichten.
Hier soll ja im Prinzip nur ein String umgemodelt werden, der zufällig auch ein Datum sein kann. Wer was besseres findet gewinnt den Preis.
Hier soll ja im Prinzip nur ein String umgemodelt werden, der zufällig auch ein Datum sein kann. Wer was besseres findet gewinnt den Preis.
XunnD
Lieutenant
- Registriert
- März 2006
- Beiträge
- 728
Virginia schrieb:Ich bräuchte die einfachste Art und Weise, mit PHP ein deutsches Datum in ein englisches umzuwandeln.
Also z.B. "01.01.2007" in "2007-01-01"
Wäre dankbar, wenn mir jmd. helfen könnte.
Wenn TT.MM.JJJJ ein deutsches ist, ist das korrespondierende englische: MM.TT.JJJJ (wie's im Englischen auch gesprochen wird).
JJJJ-MM-TT ist eher ein Format, was zur einfacheren Darstellung und EDV genutzt wird, dort ist nämlich die Komponente, die sich am Datum am häufigsten ändert (der Tag) in der niedrigsten Stelle (nämlich rechts).
Damit lassen sich dann einfache String / Integervergleiche machen.
Folgendes:
Datum1 = 2. Januar 2007
Datum2 = 1. Januar 2008 (also später)
nun ist aber...
02.01.2007 > 01.01.2008 (was Datum-technisch betrachtet falsch ist, weil von links betrachtet wird)
Einfacher betrachtet: 2012007 > 1012008 !!!
mit der Schreibweise für Datum1 = 20070102 und Datum2 = 20080101 wäre das nicht passiert!!!
gimmebytes
Lt. Commander
- Registriert
- Juni 2002
- Beiträge
- 1.601
Also ich arbeite immer mit Timestamps, die lassen sich noch viel einfacher miteinander vergleichen und mit den passenden Funktionen in PHP auch lesbar formatieren.
krizzelfix
Commander
- Registriert
- Sep. 2005
- Beiträge
- 2.626
Ist nur schlecht wenn ein datum vor 1970 eingegeben wirdAlso ich arbeite immer mit Timestamps
Relict
Admiral
- Registriert
- Juni 2005
- Beiträge
- 7.934
@merv
Mach ich auch grundsätzlich so, auch in der DB. Ist viel flexibler und gibt zum Konvertieren dann auch genügend Funktionen.
Doch wir wissen nicht für was Virginia das braucht. Evt. von Formularfeldern ?
Ich habe mir ne Funktion geschrieben, die automatisch Dropdownboxen für solche Dinge kreiert usw., nix Punkt, Bindestrich etc., egal.
Edit:
@Tewes
Ja für Geburtstage und sowas ists natürlich besser das im String hintereinander zu belassen.
Aber für die meisten anderen Sachen ist erfahrunggemäss Timestamp vorzuziehen.
Mach ich auch grundsätzlich so, auch in der DB. Ist viel flexibler und gibt zum Konvertieren dann auch genügend Funktionen.
Doch wir wissen nicht für was Virginia das braucht. Evt. von Formularfeldern ?
Ich habe mir ne Funktion geschrieben, die automatisch Dropdownboxen für solche Dinge kreiert usw., nix Punkt, Bindestrich etc., egal.
Edit:
@Tewes
Ja für Geburtstage und sowas ists natürlich besser das im String hintereinander zu belassen.
Aber für die meisten anderen Sachen ist erfahrunggemäss Timestamp vorzuziehen.
Zuletzt bearbeitet:
tewes schrieb:Ist nur schlecht wenn ein datum vor 1970 eingegeben wird![]()
Nur Windows kann bis 1970 umgehen. Andere Betriebssysteme verarbeiten auch negative Timestamps die bis ins Jahr 1901 führen.
@Virginia
PHP:
$time = '01.01.2007'
// wandelt ein Datumsstring in Timestamp um
$stamp = strtotime($time);
// gewohnte Ausgabe mit date
echo date('Y-m-d', $stamp);
krizzelfix
Commander
- Registriert
- Sep. 2005
- Beiträge
- 2.626
@zatarc: Da aber die Meisten Leute ein Windows Rechner haben und eine Internetseite von allen besucht werden kann, sollte man darauf rücksicht nehmen.
Oder liegt es an dem Sys wo der Server drauf läuft?
Oder liegt es an dem Sys wo der Server drauf läuft?
Zuletzt bearbeitet:
Revontulet
Ensign
- Registriert
- Apr. 2004
- Beiträge
- 233
genau, php wird serversetig ausgeführt.tewes schrieb:Oder liegt es an dem Sys wo der Server drauf läuft?
krizzelfix
Commander
- Registriert
- Sep. 2005
- Beiträge
- 2.626
Mhh erst gepostet und dann nachgedacht -.-
Die "Begrenztheit" liegt daran, dass der Timestamp _noch_ in 32bit kodiert wird.
Ich lege mal eine _äußerst gewagte_ These in den Raum:
Bis zum 19. Januar 2038 (da endet der 32bit timestamp) wird es die Menschheit geschafft haben, von 32bit-CPUs/-Betriebssystemen wegzukommen
.
Die Umstellung auf 64bit vergrößert die Zeitspanne um ca. 290 Milliarden Jahre (in beide Richtungen).
Ich lege mal eine _äußerst gewagte_ These in den Raum:
Bis zum 19. Januar 2038 (da endet der 32bit timestamp) wird es die Menschheit geschafft haben, von 32bit-CPUs/-Betriebssystemen wegzukommen
Die Umstellung auf 64bit vergrößert die Zeitspanne um ca. 290 Milliarden Jahre (in beide Richtungen).
Ähnliche Themen
- Antworten
- 12
- Aufrufe
- 1.692
- Antworten
- 7
- Aufrufe
- 9.131
- Antworten
- 2
- Aufrufe
- 2.320