2014-03-26 27 views
1

我維護的PHP代碼似乎混淆了日期/時間處理而不是很糟糕。特別是這個應用程序在其他語言環境中無法正常工作。使用PHP strftime()使用date()格式的字符串

其中一個問題是使用不可本地化的date()函數而不是strftime()函數。它使用了幾層深的內部功能,這些功能實際上使用了數千次,並且遍佈各處的許多不同的格式字符串。

更換date()strftime()會花費太多時間。相反,我正在研究如何讓strftime()處理與date()相同的格式字符串,但找不到任何內容。有沒有已知的解決方案使用strftime()date()格式字符串?

+1

你可以舉一個你的日期輸出需要的樣子嗎? –

+1

如果它是「幾層深」,「日期」產生的日期可能非常適合內部使用;畢竟,'date'是生成機器可讀日期格式的一種體面的方式。如果日期需要以不同方式呈現給用戶,那麼只能在「外層」上發生。長話短說:請詳細說明樣品價值。 – deceze

+0

你看過使用'sed'來查找和替換所有PHP文件中的'date()'嗎? –

回答

0

我猜你需要將date()函數當前使用的格式轉換成strftime()可以使用的格式。

爲了這個目的,我建議使用str_replace()使用數組作爲searchreplace參數:

$oldFormat = 'Y-m-d'; 

$search = array('Y', 'm', 'd'); 
$replace = array('%Y', '%m', '%d'); 

$newFormat = str_replace($search, $replace, $oldFormat); 

當然,你應該添加所有的搜索和替換,你會需要轉換條款。

+1

下面是一個包含兩個參數的表格:http://andy-carter.com/blog/php-date-formats – bart

+0

不是:除了'Y','m'和'd'外,其他大多數字母都有不同意思是'date()'和'strftime()'之間的意思。這沒有任何意義,但就是這樣。 – T30

+0

只是通常不一致的PHP,@ T30 –