工作一年,收獲了很多,慢慢做些總結,提升工作效率,
工作中mysql使用的時間是一個UNIX時間戳:從1970年1月1日0點開始到當前時間的秒數,由於是int類型,很方便的適用於計算機處理,不僅僅是php和mysql的數據交互的一種格式,在各種客戶端,也是數據交互的標准(android/IOS)等,因此如果只是保存和顯示日期的時候,應該使用UNIX時間戳來計算日期和做為標准的日期格式。
工作中常用的流程是:將HTML頁面的時間轉化為時間戳保存到mysql中,從mysql中取出時間戳格式化展示在web或手機客戶端。總之mysql中保存的時間是UNIX時間戳,然後被PHP格式化為合適的時間
介紹幾個常用的函數
1.date(),2.mktime(),3.getdate(),4.strftime()
1.date()
PHP中獲取時間和日期
使用date()函數:將時間戳或當前時間轉化成格式化的字符串,例如:
echo date('Y-i-s');//輸出2014-3-25
2.mktime()
使用mktime()將時間轉化成UNIX時間戳
$timestamp = mktime();
獲取當前時間戳有三種方法:
mktime(),time(),date('U')
mktime做時間運算
mktime(12,0,0,$mon,$day+10,$year);十天以後的時間戳
3.getdate()函數:
$today = getdate();
print_r($today);
//輸出
Array
(
[seconds] => 38
[minutes] => 38
[hours] => 22
[mday] => 25
[wday] => 2
[mon] => 3
[year] => 2014
[yday] => 83
[weekday] => Tuesday
[month] => March
[0] => 1395758318
)
使用checkdate()函數檢驗日期有效性
4.strftime()
格式化時間戳
mysql格式化時間
1.DATE_FORMAT()
2.UNIX_TIMESTAMP()返回格式化成UNIX時間戳的日期,例如:SELECT UNIX_TIMESTAMP(date) FROM table,這樣就可以在PHP中處理了
PHP中格式化時間的函數比較少,介紹幾個常用的格式化時間函數
/** * *將timestamp時間轉化為x時x分x秒 * */ public static function getTimeLong($seconds) { if (!$seconds) { return '0秒'; } $ret = ''; if ($seconds >= 3600) { $hours = (int)($seconds / 3600); $seconds = $seconds % 3600; if ($hours) { $ret .= ($hours . '時'); } } if ($seconds >= 60) { $mi = (int)($seconds / 60); $seconds = $seconds % 60; if ($mi) { $ret .= ($mi . '分'); } } if ($seconds) { $ret .= ($seconds . '秒'); } return $ret; }
/** * 將相差timestamp轉為如“1分鐘前”,“3天前”等形式 * * @param timestamp $ts_diff 當前時間 - 要格式化的timestamp */ public static function formatTime($ts_diff) { if ($ts_diff <=0) { return date('Y-m-d'); } else if ( $ts_diff <= 3600 ) { return max(1, (int)($ts_diff/60)) . '分鐘前'; } else if ( $ts_diff <= 86400 ) { return ((int)($ts_diff/3600)) . '小時前'; } else { return ((int)($ts_diff/86400)) . '天前'; } }
/** 將數字星期轉換成字符串星期 weekNum2String($num) * @param int * @return string */ public static function weekNum2String($num){ switch($num){ case 1: return '星期一'; case 2: return '星期二'; case 3: return '星期三'; case 4: return '星期四'; case 5: return '星期五'; case 6: return '星期六'; case 7: return '星期日'; default: return '未知'; } }