Benchmark: strtotime() vs DateTime vs getTimestamp in PHP

Zuletzt schrieb ich ja darüber, wie man Datumsvergleiche in PHP realisieren kann. In dem Artikel stellte ich zwei Lösungsansätze vor. Zum einen mit Hilfe der strtotime()-Methode und zum anderen mit der DateTime-Klasse.
In den Kommentaren wurde ich dann von Christoph darauf hingewiesen, dass die strtotime()-Variante womöglich schneller sei. So hundertprozentig sicher war er sich jedoch auch nicht, also habe ich beschlossen mal einen kleinen Performance-Test durchzuführen, dessen Ergebnisse ich euch hier kurz präsentieren möchte.
Was habe ich gestestet?
Da die Frage auf strtotime() vs. DateTime abzielt, die DateTime-Klasse im Gegenteil zur strtotime()-Funktion jedoch mehr Funktionalität bietet, habe ich bei der DateTime-Klasse die Erstellung des DateTime-Objekts + die Ausgabe des Timestamps gemessen. Es wird also die Zeit für die identische Ausgabe gemessen.
Als Eingabe habe ich ein Datum ohne Zeit genommen – sprich eine Jahres-, Monats- und Tag-Angabe. Zudem habe ich noch eine dritte Funktion mit ins Rennen geschickt. Was genau es mit der getTimestamp()-Funktion […]

Datum in PHP vergleichen – so geht’s

php_date_compareWie vergleicht man eigentlich 2 Daten (Daten = Plural von Datum) in PHP miteinander? Die Frage klingt erst mal einfacher als es ist.
Der erste Gedanke, der einem meistens kommt, ist folgender. Wir speichern 2 Daten als String und vergleichen diese.
 
 
Vorüberlegung

<?php
$date1 = "2012-1-12";
$date2 = "2011-10-12";

if ($date1 > $date2)
echo "$date1 ist neuer als $date2";
else
echo "$date1 ist &auml;lter als $date2";
?>

Ausgabe:

2012-1-12 ist neuer als 2011-10-12

Auf den ersten Blick scheint das auch eine funktionierende Lösung zu sein. Was jedoch, wenn die beiden Daten in einem unterschiedlichen Format vorliegen?

<?php
$date1 = "12-1-12";
$date2 = "2011-10-12";

if ($date1 > $date2)
echo "$date1 ist neuer als $date2";
else
echo "$date1 ist &auml;lter als $date2";
?>

Ausgabe:

12-1-12 ist älter als 2011-10-12

Nun wird das Datum in 2012 auf einmal als kleiner als das Datum […]

C# DateTime.Ticks in Unix-Timestamp und andere Formate umrechnen

C# DateTime.Ticks ConverterMit den DateTime-Funktionen des .NET-Frameworks lässt sich so einiges anstellen. Der Umgang damit gestaltet sich, meiner Meinung nach, sehr angenehm. Einzige Voraussetzung: Man befindet sich in einer reinen .NET-Umgebung. Kommen andere Systeme ins Spiel, so geht die Rechnerei los. Aber woran liegt es, dass man zum Beispiel DateTime.Ticks nicht mit der PHP-Funktion mktime() vergleichen kann?
Ruft man den “Timestamp” eines DateTime-Objekts (DateTime.Ticks) ab, so bekommt man die Anzahl der Ticks seit dem 01.01.0001 00:00Uhr zurück. Ein Tick wiederum ist 100 Nanosekunden lang.
Ein Unix-Timestamp, so wie ihn mktime() zum Beispiel produziert, gibt im Gegenteil zu DateTime.Ticks die Anzahl der Sekunden seit dem 01.01.1970 zurück.
Ein direkter Vergleich ist somit nicht möglich. Wie umgerechnet werden muss, möchte ich euch heute anhand von ein paar kurzen Snippets zeigen.
Unix-Timestamp -> DateTime.Ticks

private static DateTime TimeFromUnixTimestamp(int unixTimestamp)
{
[…]