什麼是轉換英國的日期和時間格式的最佳方式:編寫,英國日期轉換爲相對時間PHP函數
30/01/2013 13:30:06
這是d/M/YH:我:在PHP記數法中,相對時間(即剛剛,現在,幾分鐘前,30分鐘前,3小時前,1天前等等)使用s。我已經看到了關於這個主題的幾個教程,但它們都是圍繞創建功能而沒有任何明確的解釋。我希望就此事提供一些協助。
什麼是轉換英國的日期和時間格式的最佳方式:編寫,英國日期轉換爲相對時間PHP函數
30/01/2013 13:30:06
這是d/M/YH:我:在PHP記數法中,相對時間(即剛剛,現在,幾分鐘前,30分鐘前,3小時前,1天前等等)使用s。我已經看到了關於這個主題的幾個教程,但它們都是圍繞創建功能而沒有任何明確的解釋。我希望就此事提供一些協助。
希望這有助於
function timeSince($ptime){
$etime = time() - strtotime($ptime);
if($etime < 1){
return 'less than 1 second ago';
}
$a = array(12 * 30 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
60 * 60 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach($a as $secs => $str){
$d = $etime/$secs;
if($d >= 1){
$r = round($d);
return ' <font style="color:#0099ff"> ' . $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago</font>';
}
}
}
爲什麼複雜這樣簡單的任務?看到我的答案在下面... – phpalix
我試過這種格式的日期時間29/01/2013 13:20:42但它提出了44年前 – methuselah
使用此前:$ ptime = str_replace('/' ,' - ',$ ptime); –
dd/mm/yyyy
需要根據formatting rules否則會被當作mm/dd/yyyy
$dateString = '30/01/2013 13:30:06';
$dateObject = new DateTime(str_replace('/', '.', $dateString));
與任選加入DateTimezone作爲第二個參數DateTime構造改變爲dd.mm.yyyy
。
然後,你可以做一個diff與當前日期,並使用dateintervals來獲得相對時間
使用mktime();
和date();
例如,如果你在格式d/m/Y H:i:s
一個特定的時間,你想把它當作d-m-Y H:s:i
,你會使用explode();
爆炸的時間分割成塊,然後用date(new_format, mktime(current_format_chunks))
編寫自定義函數可能會有幫助。剪切字符串並轉換爲數字。使用mktime()創建時間戳,通過各種相對時間可能性將它與time()當前時間戳和開關(大小寫)進行比較。
解析日期的最直接和最友好的方式是DateTime擴展名。它有一個叫做createFromFormat
靜態方法:
$date = '30/01/2013 13:30:06';
$format = 'j/m/Y G:i:s';
$time = DateTime::createFromFormat($format, $date);
echo $time->format('l dS F \'y at H.i.s');
該方法採用自定義格式日期字符串。因爲您可以自己定義格式,所以比「手動」解析要容易得多。
爲了調整可以使用add()
,sub()
和modify()
方法日期:
$time->add(new DateInterval('P3DT5H')); // 3 days and 5 hours
echo $time->format('l dS F \'y at H.i.s');
$time->sub(new DateInterval('P9DT1H')); // 9 days and 1 hours
echo $time->format('l dS F \'y at H.i.s');
$time->modify('-1 year -35 days');
echo $time->format('l dS F \'y at H.i.s');
正如你可以看到modify()
方法是稍微更容易使用。另外兩種方法使用DateInterval
類和一個尷尬的格式。這並不困難(只是閱讀文檔並按照說明來做),但使用真正的單詞(即「-3天-7小時」)更易於理解。
爲了澄清,你希望我們寫關於解釋的教程? – Leri
[計算相對時間]可能的重複(http://stackoverflow.com/questions/11/calculating-relative-time) –