ursus contionabundo: php Datum formatieren

Beitrag lesen

Es kann sein, dass das Slicen mit substr hier die schnellste Variante ist. Ich gehe einfach davon aus, dass die primitivsten Operationen, die sich um "nichts" (hier die Gültigkeit von Daten) kümmern, auch die schnellsten sind.

Ersetze einfach die Zeilen $dummy = ... mit der Methode Deiner Wahl und teste selbst.

Test 1:

<?php

$dates=[];
for ( $j=1; $j < 100; $j++ ) {
	for ( $m=1; $m < 13; $m++ ) {
		for ( $d=1; $d < 31; $d++ ) {
			#$dates[] = sprintf("%04d-%02d-%02d", $j+2000, $m, $d);
			#$dates[] = sprintf("%04d%02d%02d", 2000+$j, $m, $d);
			$dates[] = sprintf("%02d.%02d.%02d", $d, $m, $j);
	  }
	}
}
$start=microtime( true );

foreach ( $dates as $date ) {
	$dummy = substr( $date, 6, 2 ) . '-' . substr( $date, 3, 2 ) . '-' . substr( $date, 0, 2 );
}
$end=microtime( true );
echo ( $end - $start ) * 1000 . " Millisekunden. (Für ". count($dates)." Werte)\n";
echo ( $end - $start ) / count($dates) * 1000000 . " Microsekunden pro Wert\n";

Test2:

<?php

$dates=[];
for ( $j=1; $j < 100; $j++ ) {
	for ( $m=1; $m < 13; $m++ ) {
		for ( $d=1; $d < 31; $d++ ) {
			#$dates[] = sprintf("%04d-%02d-%02d", $j+2000, $m, $d);
			$dates[] = sprintf("%04d%02d%02d", 2000+$j, $m, $d);
	  }
	}
}
$start=microtime( true );

foreach ( $dates as $date ) {
	$dummy = substr( $date, 0, 4 ) . '-' . substr( $date, 4, 2 ) . '-' . substr( $date, 6, 2 );
}
$end=microtime( true );
echo ( $end - $start ) * 1000 . " Mllisekunden. (Für ". count( $dates )." Werte)\n";
echo ( $end - $start ) / count( $dates ) * 1000000 . " Microsekunden pro Wert\n";