PHP中的日期和時間

UNIX時間戳

UNIX時間戳是大多數計算機中保存和表示日期和時間的一種標準格式。UNIX時間戳以爲32位置的證書表示格林威治標準時間。它是從1970年1月1日開始,到當前時間所經過的秒數。因爲UNIX是一個32位的整數,所以處理1902年以前或2038年後的日期會出現一些問題。而Windows系統的時間戳不能爲負數,這點需要尤其注意。

在 PHP中獲取日期和時間時間

time()函數與mktime()函數獲取UNIX時間戳
使用 time()函數可以獲取當前的UNIX時間戳

 <?php
    $timeStamp=time();
?>  

如需要將指定的日期時間轉變成UNIX時間戳,則可以使用mktime() 函數。

int mktime([int hour [, int minute [,int second [,int month [,int day [,int year]]]]])  

該函數的所有參數都是可選的,如果爲空,則默認將當前的日期時間,轉變爲時間戳。另外,這個函數可以自動校正越界的輸入。

<php
    echo date("Y-m-d",mktiime(0,0,0,12,36,2008))//超過日期31天,計算後輸出2009-01-05   
?>

日期的計算

在PHP中,計算兩個日期之間相隔的長度最簡單的方法就是計算兩個UNIX時間戳之差來獲取。

<?php
      $year=1901;     //接收用戶提交的用戶出生日期  
      $month=11;
      $day=05;
      $birthday=mktime(0,0,0,$month,$day,$year);
      $nowdate=time();
      $ageUnix=$nowdate-$birthday;
      $age=floor($ageUnix/(60*60*24*365))  //將來Unix時間戳的差除以一年的秒數,得到用戶的年齡
      $echo "年齡: ".$age;
?>

日期和和時間的格式化輸出

由於Unix時間戳的可讀性比較差,所以,我們通常需要把它轉變成可讀性更好的時間格式來輸出。在PHP中,可以通過調用date()函數來格式化一個本地時間和日期。

string date(string format[,int timestamp])

date()函數的第一個參數是必須的,規定時間戳的轉換格式。第二個是可選的,需要提供一個UNIX時間戳,默認值爲time()。第一個參數,是由下表提供的特殊字符組成的格式化字符串。

格式字串可以識別以下 format 參數的字符串
format 字符 說明 返回值例子
d 月份中的第幾天,有前導零的 2 位數字 0131
D 星期中的第幾天,文本表示,3 個字母 MonSun
j 月份中的第幾天,沒有前導零 131
l(“L”的小寫字母) 星期幾,完整的文本格式 SundaySaturday
N ISO-8601 格式數字表示的星期中的第幾天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天數後面的英文後綴,2 個字符 stndrd 或者 th。可以和 j 一起用
w 星期中的第幾天,數字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第幾天 0365
星期
W ISO-8601 格式年份中的第幾周,每週從星期一開始(PHP 4.1.0 新加的) 例如:42(當年的第 42 周)
F 月份,完整的文本格式,例如 January 或者 March JanuaryDecember
m 數字表示的月份,有前導零 0112
M 三個字母縮寫表示的月份 JanDec
n 數字表示的月份,沒有前導零 112
t 給定月份所應有的天數 2831

完整的格式化字符描述,請參見PHP手冊date()函數的介紹

date()函數的應用實例:

<?php   
  // 假定今天是:March 10th, 2001, 5:16:18 pm
  $today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
  echo $today."</br>";
  $today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
  echo $today."</br>";
  $today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month
  echo $today."</br>";
  $today = date("H:i:s");                         // 17:16:17
  echo $today."</br>";
  $today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (MySQL DATETIME 格式)
  echo $today."</br>";
?> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章