PHP時間和日期


1、unix時間戳

起始時間1970年1月1日至今走過的秒數

time():返回當前時間戳(秒)ps:java getTime()返回的是毫秒

microtime(); //- 返回微秒數 當前 Unix時間戳,(1s=1000ms,1 ms=1000μs),它的結果是字符串,分兩部分,前半部分是微秒(但是單位是秒),后半部分是秒。

返回字符串格式示例:0.80238600 1550278914

應用:使用microtime函數獲取毫秒

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

計算頁面的運行時間

function run_time(){
    list($msec, $sec) = explode(" ", microtime()); return ((float)$msec + (float)$sec); } $start_time = run_time(); $end_time = run_time(); echo '該示例的運行時間為'.($end_time - $start_time).'秒';

getdate — 取得日期/時間信息:array getdate ([ int $timestamp = time() ] )

返回一個根據 timestamp 得出的包含有日期信息的關聯數組 array。如果沒有給出時間戳則認為是當前本地時間。 

$arr = getdate();//使用getdate()函數將當前信息保存
print_r($arr);
echo $arr['year']."-".$arr['mon']."-".$arr['mday']." ";//返回當前的日期信息
echo $arr['hours'].":".$arr['minutes'].":".$arr['seconds']." ".$arr['weekday'];//返回當前的時間信息
echo "<p>Today is the $arr[yday]th of year";//輸出今天是一年中的第幾天

2、php時區

獲取服務器時區date_default_timezone_get();

設置服務器時區

如果從代碼返回的不是正確的時間,有可能是因為服務器位於其他國家或者被設置為不同時區。中國時區可設置為"Asia/Shanghai"或"PRC"

方法1、配置文件修改

在php.ini里加上找到date.timezone項,設置date.timezone = "Asia/Shanghai",重啟環境。

方法2、在頁面添加date_default_timezone_set("PRC");

方法3、在頁頭加上設置時區ini_set('date.timezone','Asia/Shanghai');

設置時區,時區設置不正確會拋出錯誤:It is not safe to rely on the system's timezone settings.

3、格式化輸出日期

date函數用於獲取格式化后的日期:string date ( string $format [, int $timestamp ] ),返回將整數 timestamp 按照給定的格式字串而產生的字符串。

format :必須,規定時間戳的格式。timestamp :可選。規定時間戳。默認值是當前時間戳time()。

常用格式化字符

用於日期

的字符

表示年(四位數)
m/n 01-12月/1-12月
d/j 01-31天/1-31天
w 月里的某周0-6|
表示周里的某天
t 某月天數
L 是否閏年

用於時間

的字符

H/h 00-24時/00-12時
i 00-59分
s 00-59秒
A/a AM或PM/am或pm
其他字符 "/"、 "." 、 "-" 、":"等 插入字符中,以增加其他格式。

閏年定義:

a.能被4整除且不被100整除
b.若能被100整除,則同時要被400整除

// 用三種不同方法格式今天的日期
echo '今天是 ' . date('Y/m/d') .'<br>';
echo '今天是 ' . date('Y.m.d') .'<br>';
echo '今天是 ' . date('Y-m-d') .'<br>';
echo '今天是 ' . date('l').'<br>';
echo '現在時間是 ' . date('h:i:sa').'<br>';
echo '完整的日期和時間是 '.date('Y-m-d h:i:sa').'<br>';
echo date("l Y-m-d H:i:s T"); //除了時間,再輸出星期及所在時區

小應用:自動更新版權年份© 2010-<?php echo date("Y")?>

使用預定義常量輸出不同格式的時間和日期 

echo "<p>DATE_ATOM = ".date(DATE_ATOM);    
echo "<p>DATE_COOKIE = ".date(DATE_COOKIE);
echo "<p>DATE_ISO8601 = ".date(DATE_ISO8601);
echo "<p>DATE_RFC822 = ".date(DATE_RFC822);
echo "<p>DATE_RFC850 = ".date(DATE_RFC850);
echo "<p>DATE_RSS = ".date(DATE_RSS);
echo "<p>DATE_W3C = ".date(DATE_W3C)."<p>";

 

4、自定義日期

使用mktime函數可以返回指定時間的時間戳:mktime(hour,minute,second,month,day,year) 

$d=mktime(15, 23, 30, 2, 16, 2019);
echo "創建日期是 " . date("Y-m-d h:i:sa", $d). "<br>";//創建日期是 2019-02-16 03:23:30pm

strtotime() 把日期字符串轉成時間戳,用於把人類可讀的字符串轉換為 Unix 時間。

$d=strtotime("now");
$d=strtotime("3:38pm April 15 2018");
echo date("Y-m-d h:i:sa", $d);
$d=strtotime("tomorrow"); //明天
$d=strtotime("next Saturday"); //下周六
$d=strtotime("next Week");//下周
$d=strtotime ("last Monday");//上周一$d=strtotime("+3 Months"); //三個小時后

輸出下6個周六的日期:

$startdate = strtotime("Saturday");
$enddate = strtotime("+6 weeks",$startdate);
while ($startdate < $enddate) {
    echo date("M d", $startdate),"<br>";
    $startdate = strtotime("+1 week", $startdate);
}

輸出12月31日之前的天數:

$d1=strtotime("December 31");
$d2=ceil(($d1-time())/60/60/24);
echo "距離十二月三十一日還有:" . $d2 ." 天。";

5、驗證日期存在性

使用checkdate()函數驗證日期

$year = 2008;
$month = 2;
$day1 = 29;
$day2 = 30;
var_dump(checkdate($month,$day1,$year));
var_dump(checkdate($month,$day2,$year));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM