PHP獲取當前時間、時間戳的各類格式寫法彙總[日期時間]

使用strtotime能夠將各類格式的時間字符串轉換爲時間戳php

轉換常規時間格式
html

echo date('Y-m-d H:i:s', strtotime('2016-01-30 18:00')).PHP_EOL;
echo date('Y-m-d H:i:s', strtotime('20160130180001')).PHP_EOL;

轉換天然時間描述
mysql

//昨天
echo date('Y-m-d H:i:s', strtotime('yesterday')).PHP_EOL;
//上週
echo date('Y-m-d H:i:s', strtotime('last week')).PHP_EOL;
//本週開始時間
echo date('Y-m-d H:i:s', strtotime('this week midnight')).PHP_EOL;
//本月開始時間
echo date('Y-m-d H:i:s', strtotime('first day of this month midnight')).PHP_EOL;
 
//計算相對時間
echo date('Y-m-d H:i:s', strtotime('+1 month')).PHP_EOL;

完整的php時間描述文檔能夠參考sql

http://php.net/manual/zh/datetime.formats.relative.phpide

2-----函數

今天寫下php中,如何經過各類方法 獲取當前系統時間、時間戳,並備註各類格式的含義,可靈活變通。
一、獲取當前時間方法date()
很簡單,這就是獲取時間的方法,格式爲:date($format, $timestamp),format爲格式、timestamp爲時間戳–可填參數。
二、獲取時間戳方法time()、strtotime()
這兩個方法,均可以獲取php中unix時間戳,time()爲直接獲取獲得,strtotime($time, $now)爲將時間格式轉爲時間戳,$time爲必填。清楚了這個,想了解更多,請繼續往下看。this

三、 date($format)用法
好比:
echo date(‘Y-m-d’) ,輸出結果:2012-03-22
echo  date(‘Y-m-d H:i:s’),輸出結果:2012-03-22 23:00:00
echo  date(‘Y-m-d’, time()),輸出結果:2012-03-22 23:00:00(結果同上,只是多了一個時間戳參數)(時間戳轉換爲日期格式的方法)
echo  date(‘Y’).’年’.date(‘m’).’月’.date(‘d’).’日’,輸出結果:2012年3月22日
舉例就這幾個,只是格式的變通而已,下面是格式中各個字母的含義:spa

/**************格式中可以使用字母的含義**************/
a – "am" 或是 "pm" .net

A – "AM" 或是 "PM" unix

d – 幾日,二位數字,若不足二位則前面補零; 如: "01" 至 "31" 

D – 星期幾,三個英文字母; 如: "Fri" 

F – 月份,英文全名; 如: "January" 

h – 12 小時制的小時; 如: "01" 至 "12" 

H – 24 小時制的小時; 如: "00" 至 "23" 

g – 12 小時制的小時,不足二位不補零; 如: "1" 至 12" 

G – 24 小時制的小時,不足二位不補零; 如: "0" 至 "23" 

i – 分鐘; 如: "00" 至 "59" 

j – 幾日,二位數字,若不足二位不補零; 如: "1" 至 "31" 

l – 星期幾,英文全名; 如: "Friday" 

m – 月份,二位數字,若不足二位則在前面補零; 如: "01" 至 "12" 

n – 月份,二位數字,若不足二位則不補零; 如: "1" 至 "12" 

M – 月份,三個英文字母; 如: "Jan" 

s – 秒; 如: "00" 至 "59" 

S – 字尾加英文序數,二個英文字母; 如: "th","nd" 

t – 指定月份的天數; 如: "28" 至 "31" 

U – 總秒數 

w – 數字型的星期幾,如: "0" (星期日) 至 "6" (星期六) 

Y – 年,四位數字; 如: "1999" 

y – 年,二位數字; 如: "99" 

z – 一年中的第幾天; 如: "0" 至 "365" 


四、strtotime($time)用法
好比:
echo strtotime(’2012-03-22′),輸出結果:1332427715(此處結果爲隨便寫的,僅做說明使用)
echo strtotime(date(‘Y-d-m’)),輸出結果:(結合date(),結果同上)(時間日期轉換爲時間戳)
strtotime()還有個很強大的用法,參數可加入對於數字的操做、年月日周英文字符,示例以下:
echo date(‘Y-m-d H:i:s’,strtotime(‘+1 day’)),輸出結果:2012-03-23 23:30:33(會發現輸出明天此時的時間)
echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’)),輸出結果:2012-03-21 23:30:33(昨天此時的時間)
echo date(‘Y-m-d H:i:s’,strtotime(‘+1 week’)),輸出結果:2012-03-29 23:30:33(下個星期此時的時間)
echo date(‘Y-m-d H:i:s’,strtotime(‘next Thursday’)),輸出結果:2012-03-29 00:00:00(下個星期四此時的時間)
echo date(‘Y-m-d H:i:s’,strtotime(‘last Thursday’)),輸出結果:2012-03-15 00:00:00(上個星期四此時的時間)
等等,本身去變通研究吧,strtotime()方法能夠經過英文文本的控制Unix時間戳的顯示,而獲得須要的時間日期格式。

五、php獲取當前時間的毫秒數
php自己沒有提供返回毫秒數的函數,但提供了microtime()方法,它會返回一個Array,包含兩個元素:一個是秒數、一個是小數表示的毫秒數,咱們能夠經過此方法獲取返回毫秒數,方法以下:

function getMillisecond() {
list($s1, $s2) = explode(' ', microtime());		
return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);	
}

六、獲取當前時間相差6小時解決方法
有些朋友,獲取的時間與當前系統時間相差6個小時,這是由於時區設置問題,只要將之設爲上海時間便可。方法以下:
1.在php.ini中找到date.timezone,將它的值改爲 Asia/Shanghai,即 date.timezone = Asia/Shanghai
2.在程序開始時添加 date_default_timezone_set(‘Asia/Shanghai’)便可。
詳細設置解讀見:PHP經過date()函數取得時間錯誤

囉嗦的挺多的,就總結這麼些有關 php獲取當前時間、時間戳、毫秒數、時間相差的各類寫法及解決方法,有任何疑問,歡迎留言提出,一同討論。

相關文章
相關標籤/搜索