我試圖使用的strtotime轉換以下日期:的strtotime歐洲日期格式
07/09/2009 17時01分27秒
這是九月的7日歐洲/倫敦時區格式
該函數反轉月份和日期,是否有任何解決方法? 感謝
我試圖使用的strtotime轉換以下日期:的strtotime歐洲日期格式
07/09/2009 17時01分27秒
這是九月的7日歐洲/倫敦時區格式
該函數反轉月份和日期,是否有任何解決方法? 感謝
嘗試:
strtotime(07/09/2009 17:01:27 GMT);
或者先試試這個可能:
date_default_timezone_set('Europe/London');
我想最好的答案是沒有的strtotime使用,你永遠不可能100%,其精度
「...不使用strtotime,因爲您的精度永遠無法達到100%」 對於任何未被理解和使用的函數正常。 strtotime()是一個非常有用和強大的功能。一種解決方案是始終將日期格式(用於計算目的)格式化爲「Y-m-d」。 – GZipp 2009-09-07 16:39:08
如果您不在Windows上,您可以改爲使用strptime
,並明確設置格式。正如OIS指出的,strptime
在Windows上不可用。
要將拆分年/月/日等值轉換爲unix時間戳,您可以將它們傳遞到mktime
。有點煩躁,但它的工作原理。
您可能想要這樣做的一個原因是使用date
以不同的格式打印它。
從strptime php.net頁:
實施例#1 strptime()的例子
<?php $format = '%d/%m/%Y %H:%M:%S'; $strf = strftime($format); echo "$strf\n"; print_r(strptime($strf, $format)); ?>
上例將輸出 東西類似於:
3月10日/ 2004 15:54:19
Array ( [tm_sec] => 19 [tm_min] => 54 [tm_hour] => 15 [tm_mday] => 3 [tm_mon] => 9 [tm_year] => 104 [tm_wday] => 0 [tm_yday] => 276 [unparsed] => )
注意:該功能在Windows平臺上未實現。 – OIS 2009-09-07 15:29:12
這是一個快速修復應該工作。另一種方法是使用命名匹配的正則表達式。
function eurototime($string)
{
static $sorted = array(
'tm_hour' => null,
'tm_min' => null,
'tm_sec' => null,
'tm_mon' => null,
'tm_mday' => null,
'tm_year' => null,
);
static $unsorted = array(
'tm_mday',
'tm_mon',
'tm_year',
'tm_hour',
'tm_min',
'tm_sec',
);
static $format = '%d/%d/%d %d:%d:%d';
$parsed = sscanf($string, $format);
$data = array_combine($unsorted, $parsed);
$sortedData = array_merge($sorted, $data);
$int = call_user_func_array('mktime', $sortedData);
return $int;
}
date_default_timezone_set('Europe/London');
echo eurototime(date('d/m/Y H:i:s')), "\n", time(),"\n";
變化/
爲-
,好像PHP得到/
爲美國的格式,並-
歐洲。你可以在這裏看到:
$date = "06/10/2011 14:28"; // 6 october 2011 2:28 pm
$otherDate = "06-10-2011 14:28"; // 6 october 2011 2:28 pm
echo $stamp = strtotime($date) . "<br />"; // outputs 1307708880
echo $otherStamp = strtotime($otherDate) . "<br />"; // outputs 1317904080
echo date("d-m", $stamp); // outputs 10-06
echo date("d-m", $otherStamp); // outputs 06-10
DateTime可以很容易地處理這個問題:
$datetime = new DateTime('07/09/2009 17:01:27', new DateTimeZone('Europe/London'));
echo $datetime->format('d/m/Y H:i:s');
只是交換日期和月份的值。 – Gumbo 2009-09-07 15:17:42
我沒有使用每個值一個變量,否則我會這樣做 – Roch 2009-09-23 09:58:20