php之日期時間操作一籮筐

2020-07-16 10:05:35
未標題-3.png

下載 (1).jpg

格式化日期時間

date : 格式化日期時間

  • 場景

將當前日期時間或者特定日期時間格式化輸出為特定格式的字串,常用於人性化展示資訊.

  • 說明

返回給定時間戳格式化後所產生的日期時間字串,如果沒有給出時間戳則預設使用本地當前時間.

  • 備註

格式說明返回值範例
Y4 位數位完整表示的年份2019
y2 位數位表示的年份19
M三個字母縮寫表示的月份Jan 到 Dec
m數位表示的月份,有前導零01 到 12
D星期中的第幾天,文字表示,3個字母Mon 到 Sun
d月份中的第幾天,有前導零的 2 位數位01 到 31
H小時,24 小時格式,有前導零00 到 23
h小時,12 小時格式,有前導零01 到 12
I是否為夏令時如果是夏令時為1 ,否則為 0
i有前導零的分鐘數00 到 59
S每月天數後面的英文字尾,2 個字元st,nd,rd 或者 th ,可以和 j 一起用
s秒數,有前導零00 到 59
  • 常用格式

// 形如 2019-05-31 12:00:00echo date("Y-m-d H:i:s");
// 形如 2019/05/31 12:00:00echo date("Y/m/d H:i:s");
// 形如 2019年05月31日 12時00分00秒echo date("Y年m月d日 H時i分s秒");
  • 範例

<?php
// 設定當前時區為上海時區
date_default_timezone_set("Asia/Shanghai");

// 獲取當前時區 : Asia/Shanghai
echo "當前時區 : ".date_default_timezone_get()."<br/>";

// `Y年m月d日 H時i分s秒` 格式化當前時間 : 2019年05月30日 22時32分46秒
echo "當前時間 : ".date("Y年m月d日 H時i分s秒")."<br/>";

// `Y-m-d H:i:s` 格式化當前時間 : 2019-05-30 22:32:46
echo "當前時間 : ".date("Y-m-d H:i:s")."<br/>";

// `w` 星期中的第幾天,數位表示: 0(表示星期天)到 6(表示星期六)
switch (date("w")) {    
    case '0':
        $dayStr = "日";        
        break;    
    case '1':
    $dayStr = "一";        
    break;    
  case '2':
    $dayStr = "二";        
    break;    
  case '3':
    $dayStr = "三";      
    break;   
  case '4':
    $dayStr = "四";        
    break;    
  case '5':
    $dayStr = "五";        
    break;    
  case '6':
    $dayStr = "六";        
    break;    
  default:
    $dayStr = "未知";        
    break;
} 
// 2019年05月30日 星期四
echo "當前時間 : ".date("Y年m月d日")." 星期".$dayStr."<br/>";
echo "<hr/>";

// `z` 年份中的第幾天 : 今天是全年的第149天
echo "今天是全年的第".date("z")."天<br/>";

// `W` ISO-8601 格式年份中的第幾週,每周從星期一開始 : 本週是全年的第22週
echo "本週是全年的第".date("W")."周<br/>";

// `t` 指定的月份有幾天 : 本月共有31天
echo "本月共有".date("t")."天<br/>";
?>

日期轉化時間戳

time : 返回當前的 Unix 時間戳

  • 場景

獲取當前日期時間或特定日期時間的時間戳,常用於日期時間之間的相互轉換.

  • 說明

返回自從 Unix 紀元(格林威治時間 1970年1月1日 00:00:00)到當前時間的秒數.

  • 範例

<?php
// 設定當前時區為上海時區
date_default_timezone_set("Asia/Shanghai");

// 獲取當前時區
echo "當前時區 : ".date_default_timezone_get()."<br/>";

// 一週前的日期時間: 7 days; 24 hours; 60 mins; 60 
secs$preWeek = time() - (7 * 24 * 60 * 60);
echo "現在是".date("Y-m-d H:i:s").",上週是".date("Y-m-d H:i:s",$preWeek)."<br/>";

// 一週後的日期時間: 7 days; 24 hours; 60 mins; 60 secs
$nextWeek = time() + (7 * 24 * 60 * 60);
echo "現在是".date("Y-m-d H:i:s").",下週是".date("Y-m-d H:i:s",$nextWeek)."<br/>";
?>

microtime : 返回當前 Unix 時間戳和微秒數

  • 場景

獲取當前日期時間或特定日期時間的時間戳,常用於程式執行過程打點分析,也可以用於日期時間之間的互相轉換.

  • 說明

當前 Unix 時間戳以及微秒數,本函數僅在支援 `gettimeofday()`` 系統呼叫的作業系統下可用.

  • 範例

<?php

// 設定當前時區為上海時區
date_default_timezone_set("Asia/Shanghai");

// 獲取當前時區
cho "當前時區 : ".date_default_timezone_get()."<br/>";

// 當前日期時間戳
echo "當前日期時間戳: ".time()." <--> ".microtime()." <--> ".microtime(TRUE)."<br/>";

?>

mktime : 取得一個日期的 Unix 時間戳

  • 場景

獲取給定日期的時間戳,按照"時分秒 月日年"格式依次解析,返回時間戳.

  • 說明

根據給出的引數返回 Unix 時間戳.

  • 備註

格式說明引數範例
Hhour 小時數00 到 23
iminute 分鐘數00 到 59
ssecond 秒數00 到 59
nmonth 月份數01 到 12
jday 天數01 到 31
Yyear 年份數,可以是兩位或四位數位0-69 對應於 2000-2069 ,70-100 對應於 1970-2000

格式: 時分秒 月日年,支援從右往左依次省略,被省略的值取當前時間的對應值.

  • 範例

<?php
// 設定當前時區為上海時區
date_default_timezone_set("Asia/Shanghai");

// 獲取當前時區
echo "當前時區 : ".date_default_timezone_get()."<br/>"; 

// 指定日期時間戳: 時分秒 月日年 : 1559275200 <--> 2019-05-31 12:00:00
echo "2019年05月31日 12:00:00 的時間戳: ".mktime(12,0,0,5,31,2019)." <--> ".date("Y-m-d H:i:s", mktime(12,0,0,5,31,2019))."<br/>"; 

// 距離國慶節還有多少天,單位秒 : 今天是2019-05-31,距離國慶節還剩122天
$nationalDay = mktime(0,0,0,10,1,2019);
$currentDay = time();
$remainingDay = floor(abs($nationalDay - $currentDay)/(24*3600));
echo "今天是".date("Y-m-d").",距離國慶節還剩".$remainingDay."天<br/>";
?>

strtotime : 將任何字串的日期時間描述解析為 Unix 時間戳

  • 場景

將英文日期解析成時間戳,比直接解析日期方便,採用自然語意而不是程式語言進行轉換日期.

  • 說明

本函數預期接受一個包含美國英語日期格式的字串並嘗試將其解析為 Unix 時間戳(自 January 1 1970 00:00:00 GMT 起的秒數,其值相對於 now 引數給出的時間,如果沒有提供此引數則用系統當前時間.

  • 常用格式

// 2019-06-02
echo date("Y-m-d", strtotime("2019-05-31 +2 days"));

// 2019-07-01
echo date("Y-m-d", strtotime("2019-05-31 +1 month"));

// 2019-06-09
echo date("Y-m-d", strtotime("2019-05-31 +1 week 2 days 4 hours 2 seconds"));
  • 範例

<?php
// 設定當前時區為上海時區
date_default_timezone_set("Asia/Shanghai");

// 獲取當前時區
echo "當前時區 : ".date_default_timezone_get()."<br/>";

// 當前日期時間戳
echo "當前日期時間戳: ".time()." <--> ".strtotime("now")." <--> ".date("Y-m-d H:i:s", strtotime("now"))."<br/>";

// 一週後的日期時間: 7 days; 24 hours; 60 mins; 60 secs
$nextWeek = time() + (7 * 24 * 60 * 60);
echo "現在是".date("Y-m-d H:i:s").",下週是".date("Y-m-d H:i:s",$nextWeek)." <--> ".date("Y-m-d H:i:s",strtotime("+1 week"))."<br/>";

echo "現在是".date("Y-m-d H:i:s").",1週2天4小時2秒是".date("Y-m-d H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds"))."<br/>";

echo "現在是".date("Y-m-d H:i:s").",下週三是".date("Y-m-d H:i:s",strtotime("next Thursday"))."<br/>";
?>


日期時間函總結

日期時間函數庫是 php 內建的函數庫,預設情況下已啟用,值得注意的是,日期時間和時區有關,建議首先設定下時區.

縱觀日期時間的操作方法,總的來說,可以大致分為兩類,一類是給計算機用的,另一類是給人看的.

  • 給人看的

date_default_timezone_set("Asia/Shanghai") : 設定當前指令碼使用的時區date("Y-m-d H:i:s") : 格式化日期時間date("Y-m-d", strtotime("2019-05-31 +2 days")) : 格式化英文描述的日期時間

  • 給計算機用的

time() : 當前時間的秒數microtime() : 當前時間的秒數和微秒數strtotime() : 將字串形式的日期時間轉換成時間戳

最後,文件那麼齊全,不懂就去多看看,忘記有啥方法全靠 ide 智慧提示就好,多用用就會慢慢熟練。

推薦教學:PHP製作陰陽曆轉換的日曆外掛

以上就是php之日期時間操作一籮筐的詳細內容,更多請關注TW511.COM其它相關文章!