2012-02-08 89 views

回答

3

當然,使用mktimedate

$days = 322; 
$year = 2009; 
echo date('Y-m-d', mktime(0, 0, 0, 1, $days, $year)); 

Output: 2009-11-18

+0

你確定月份的1嗎? – FMaz008 2012-02-08 20:59:57

+0

@ FMaz008 - 是的,[見輸出](http://codepad.viper-7.com/JSVWem)。 – nickb 2012-02-08 21:00:29

1
$newformat = new DateTime::createFromFormat('Y z', "2009 322")->format('Y-M-d'); 

相關的文檔在這裏:http://php.net/manual/en/datetime.createfromformat.php

+0

這很酷。 – FMaz008 2012-02-08 20:52:58

+4

DateTime :: createFromFormat是一種靜態方法,不能使用'new'。另外,你的格式字符串應該是「Y-m-d'」。並且,它會生成[關閉一天](http://codepad.viper-7.com/6HMOvb)的日期。 – nickb 2012-02-08 20:55:14

0

難的方法(和作爲獎金,我分析你給輸入例如:P):我們確實有在PHP strtotime(),它可以很容易地從一年拉時間戳

list($day, $foo, $year, $bar) = sscanf("322 days 2009 year", "%d %s %d %s"); 
$timestamp = mktime (0,0,0, 1, $day, $year); 
echo date('Y-m-d', $timestamp); 
+0

這會產生[一個月關閉]的日期(http://codepad.viper-7.com/AV9ukf)。 – nickb 2012-02-08 21:01:41

+1

@nickb固定,感謝指出:) – FMaz008 2012-02-08 21:02:41

0

echo $time = strtotime('1.1.2009'); 
// 1230764400 

而且隨着加入天IT連鎖:

echo $newTime = strtotime('+322 days', $time); 
// 1258585200 
echo date('r', $newTime); 
// Thu, 19 Nov 2009 00:00:00 +0100 
echo date('Y-m-d', $newTime); 
// 2009-11-19 
// output will be 19 instead of 18 (due to how strtotime handles + days), you 
// should use +321 days instead than 

順便說一句:我喜歡馬克B的答案BETT呃)

+0

'2009-11-19'是一天休息,期望的輸出是'2009-11-18' - 這是故意的嗎? – nickb 2012-02-08 20:57:57

+1

@nickb我沒有意識到這一點。謝謝,補充說明發表評論。 – Vyktor 2012-02-08 21:00:55

+0

感謝傢伙.........這個網站岩石........... – 2012-02-09 14:51:03