2010-03-23 33 views
0

我試圖讓Unix的時間日期字符串格式應該是這樣:從一週的某一天轉換爲UNIX時間在PHP

'second sunday of march 2010' 
'first sunday of november 2010' 

我的印象是的strtotime可以處理這樣的字符串,但顯然不是,因爲這返回false。當給定一天的星期幾時,我該如何轉換爲unix時間,這個月中的哪一天(即第一秒,第二秒等),一個月和一年。

回答

3

這應該可能與strtotime。你可以嘗試使用mktime()產生行軍第一天的時間戳,並補充說,作爲第二個參數(在字符串部分,只留下「第一個星期日」):

$timestamp = mktime (0,0,0,3,1,2010); // 1st of march 
$first_sunday = strtotime("first sunday", $timestamp); 

不知道該如何處理的第一天(3月1日)實際上是一個星期天。確保你檢查出來。

而且,也許這更可靠,檢查this了 - 海報說,他得到了與以下符號的好成績(引用):用的strtotime

<?php 
strtotime('+0 week sun nov 2009'); // first sunday in nov 2009 
strtotime('+1 week sun nov 2009'); // second sunday 
strtotime('-1 week sun nov 2009'); // last sunday in oct 2009 
?> 

與往常一樣,不管你選擇,確保你測試不錯,尤其是邊緣情況(月的第一天是星期日,上個月的最後一天是星期日....)

+0

你的第一個解決方案是聰明,但我甚至沒有嘗試它,因爲你的第二個運作良好。謝謝。 – Rob

0

你的代碼適用於PHP 5.3.0。你使用的是什麼版本的PHP?

<?php 
date_default_timezone_set("Europe/Oslo"); 
$time_march = strtotime('second sunday of march 2010'); 
$time_november = strtotime('first sunday of november 2010'); 
echo date("Y-m-d", $time_march) . " (timestamp: $time_march)\n"; 
echo date("Y-m-d", $time_november) . " (timestamp: $time_november)\n"; 
?> 

給出:

2010-03-14 (timestamp: 1268521200) 
2010-11-07 (timestamp: 1289084400) 
+0

5.1.6 ....愚蠢的網絡主機 – Rob