2013-08-01 12 views
7

Ich habe ein Datum in YDDD Format, wie 3212
ich dieses Datum in Standard konvertieren möchte date string ie 2013-08-01 in PHP
Da der erste Wert Y ist das einzige Zeichen für das Jahr, so habe ich beschlossen, die ersten drei Zeichen aus dem aktuellen Jahr zu nehmen, dh 201 aus 2013 Folgendes ist die Code, den ich für Jahr geschrieben habePHP Wie umkehren den Tag des Jahres 3212 (YDDD) in 2013.08.01 (yyyy-mm-dd) Ingenieur

<?php 
$date = "3212" 
$y = substr($date,0,1); // will take out 3 out of year 3212 
$ddd = substr($date,1,3); // will take out 212 out of year 3212 
$year = substr(date("Y"),0,3) . $y; //well create year "2013" 
?> 

Jetzt wie kann ich $year und 212 es in 2013.08.01 mit

EDIT
FYI PHP zu konvertieren: Meine PHP Version ist 5.3.6

+1

Siehe Von dort, wo Sie das Datum werden immer in 'YDDD' Format? –

+1

mit diesem, wie Sie 2003 und 2013 so unterscheiden werden ?? und was zum Teufel diese letzten 3 D steht ?? – swapnesh

+2

** meinst du das ernst? ** Datum im YDDD Format ?? und warum ist das ?? Zuerst denke ich, dass Sie in Ihr Datumsformat schauen müssen ... sagen wir Sie 4122 .. so welches Jahr ist das .. 1994,2004,1884 so weiter? – bipen

Antwort

8
$yddd = 3212; 
preg_match('/^(\d)(\d{3})$/', $yddd, $m); 

echo date('Y-m-d', strtotime("201{$m[1]}-01-01 00:00:00 +{$m[2]} days")); 
+0

es funktioniert Danke (Y) .. http://phpfiddle.org/lite/code/2wk-yfu – zzlalani

+3

Warum müssen wir alle thegas regex? – DesignerGuy

+1

@Designer Warum nicht? Ich finde das eleganter als eine Tonne unergründlicher Subs. :) – deceze

6

Wenn Sie den Code auf PHP laufen 5.3 oder später, Sie können $ Jahr und $ DDD in ein verwendbares Datum konvertieren, indem Sie date_create_from_format verwenden. Zum Beispiel:

$date = date_create_from_format("Y-z", "$year-$ddd"); 
echo date_format($date, "Y-m-d"); 
+0

Beachten Sie auch, dass date_create_from_format ein Alias ​​für DateTime :: createFromFormat ist, und beide sind in PHP <5.3 nicht verfügbar. –

2
// Formatted Date (YDDD) 
$dateGiven = "3212"; 

// Generate the year based on the first digit 
$year = substr(date("Y"),0,3).substr($dateGiven,0,1); 

// Split out the day of the year 
$dayOfTheYear = substr($dateGiven,1,3); 

// Create a date object from the formatted date 
$date = DateTime::createFromFormat('z Y', "{$dayOfTheYear} {$year}"); 

// Output the date in the desired format 
echo $date->format('Y-m-d'); 

View it online here: https://eval.in/private/69daafa849ee36

Verwandte Themen