工作中mysql使用的時(shí)間是一個(gè)UNIX時(shí)間戳:從1970年1月1日0點(diǎn)開(kāi)始到當(dāng)前時(shí)間的秒數(shù),由于是int類(lèi)型,很方便的適用于計(jì)算機(jī)處理,不僅僅是php和mysql的數(shù)據(jù)交互的一種格式,在各種客戶(hù)端,也是數(shù)據(jù)交互的標(biāo)準(zhǔn)(android/IOS)等,因此如果只是保存和顯示日期的時(shí)候,應(yīng)該使用UNIX時(shí)間戳來(lái)計(jì)算日期和做為標(biāo)準(zhǔn)的日期格式,
PHP,Mysql日期和時(shí)間整理
。工作中常用的流程是:將HTML頁(yè)面的時(shí)間轉(zhuǎn)化為時(shí)間戳保存到mysql中,從mysql中取出時(shí)間戳格式化展示在web或手機(jī)客戶(hù)端?傊甿ysql中保存的時(shí)間是UNIX時(shí)間戳,然后被PHP格式化為合適的時(shí)間
介紹幾個(gè)常用的函數(shù)
1.date(),2.mktime(),3.getdate(),4.strftime()
1.date()
PHP中獲取時(shí)間和日期
使用date()函數(shù):將時(shí)間戳或當(dāng)前時(shí)間轉(zhuǎn)化成格式化的字符串,例如:
echo date('Y-i-s');//輸出2014-3-25
2.mktime()
使用mktime()將時(shí)間轉(zhuǎn)化成UNIX時(shí)間戳
$timestamp = mktime();
獲取當(dāng)前時(shí)間戳有三種方法:
mktime(),time(),date('U')
mktime做時(shí)間運(yùn)算
mktime(12,0,0,$mon,$day+10,$year);十天以后的時(shí)間戳
3.getdate()函數(shù):
$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()函數(shù)檢驗(yàn)日期有效性
4.strftime()
格式化時(shí)間戳
mysql格式化時(shí)間
1.DATE_FORMAT()
2.UNIX_TIMESTAMP()返回格式化成UNIX時(shí)間戳的日期,例如:SELECT UNIX_TIMESTAMP(date) FROM table,這樣就可以在PHP中處理了
PHP中格式化時(shí)間的函數(shù)比較少,介紹幾個(gè)常用的格式化時(shí)間函數(shù)
/**
*
*將timestamp時(shí)間轉(zhuǎn)化為x時(shí)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 . '時(shí)');
}
}
if ($seconds >= 60) {
$mi = (int)($seconds / 60);
$seconds = $seconds % 60;
if ($mi) {
$ret .= ($mi . '分');
}
}
if ($seconds) {
$ret .= ($seconds . '秒');
}
return $ret;
}
/**
* 將相差timestamp轉(zhuǎn)為如“1分鐘前”,“3天前”等形式
*
* @param timestamp $ts_diff 當(dāng)前時(shí)間 - 要格式化的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)) . '小時(shí)前';
}
else
{
return ((int)($ts_diff/86400)) . '天前';
}
}
/** 將數(shù)字星期轉(zhuǎn)換成字符串星期 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 '未知';
}
}