首頁 後端開發 php教程 非常全面的php日期时间运算汇总_PHP

非常全面的php日期时间运算汇总_PHP

May 28, 2016 pm 01:13 PM
php日期時間

实例讲解之前,先来介绍几个核心函数: 
mktime 函数
mktime() 函数返回一个日期的 Unix 时间戳。
参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。
参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
语法:mktime(hour,minute,second,month,day,year,is_dst)
参数               描述 
hour       可选。规定小时。 
minute   可选。规定分钟。 
second   可选。规定秒。 
month    可选。规定用数字表示的月。 
day         可选。规定天。 
year        可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。 
is_dst  可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。  
自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。  
例子:mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:  

<&#63;php 
echo(date("M-d-Y",mktime(0,0,0,12,36,2001))); 
echo(date("M-d-Y",mktime(0,0,0,14,1,2001))); 
echo(date("M-d-Y",mktime(0,0,0,1,1,2001))); 
echo(date("M-d-Y",mktime(0,0,0,1,1,99))); 
&#63;> 
登入後複製

输出:

Jan-05-2002 
Feb-01-2002 
Jan-01-2001 
Jan-01-1999 
登入後複製

strtotime 函数
strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。
语法:strtotime(time,now)
参数 描述
time 规定要解析的时间字符串。
now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。
一周之后: strtotime("+1 week") ;
一周之前: strtotime("-1 week") ;
一月之后: strtotime("+1 months") ;
一天之后: strtotime("+1 days") ;
30秒之后 strtotime( " +30 seconds " );
20分钟之后 strtotime( " +20 minutes " );
12个小时之后 strtotime( " +12 hours " );

date 函数
date() 函数格式化一个本地时间/日期。
语法
date(format,timestamp)
date_default_timezone_set 函数
date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。
date_default_timezone_set(timezone)

实例

第一种情况是没有数据库,只是得到的日期值进行比较的话,那就得完全用php的时间日期函数计算了,如下:

比如要计算2015-9-5到2015-9-18还有多少天:

<&#63;php 
$startdate=strtotime("2015-9-5"); 
$enddate=strtotime("2015-9-18"); //上面的php时间日期函数已经把日期变成了时间戳,就是变成了秒。这样只要让两数值相减,然后把秒变成天就可以了,比较的简单,如下: 
$days=round(($enddate-$startdate)/3600/24) ; 
echo $days; //days为得到的天数; 
&#63;> 
登入後複製

第二种 孩子的成长

 <&#63; 
date_default_timezone_set('Asia/Shanghai'); 
//以上一句为设置时区,其实不设也行,但是zde debug的时候会有提示,说什么不安全的函数…添上吧。 
 
echo date('Y-m-d H:i:s').' 今天是'.date('Y').'年的第'.date('W').'周'; 
 
$stime='2005-11-03 10:08'; 
echo "<br/><br/>***自出生(<font color=blue>$stime</font>)以来…:<br/><br/>"; 
echo "今天是第<font color=red><b>".Lnbsp(daysofnow($stime),3)."</b></font>天<br/>"; 
echo "今天是第<font color=red><b>".Lnbsp(weeksofnow($stime),3)."</b></font>周<br/>"; 
echo "今天是第<font color=red><b>".Lnbsp(monthsofnow($stime),3)."</b></font>个月<br/>"; 
echo "今天是第<font color=red><b>".Lnbsp(yearsofnow($stime),3)."</b></font>年<br/>"; 
/* 
$output=sprintf(" 今天是第<font color=red><b>%03d</b></font>天<br/>今天是第< font color=red><b>%03d</b></font>周<br/>今天是第< font color=red><b>%03d</b></font>个月<br/>今天是第< font color=red><b>%03d</b></font>年<br/& gt;",daysofnow($stime),weeksofnow($stime),monthsofnow($stime),yearsofnow($stime)); 
echo $output; 
*/ 
 
function weeksofnow($stime) 
{ 
 $ftime=strtotime($stime); 
 $fweeks=date('w',$ftime); 
 if ($fweeks==0) $fweeks=7; 
 $nweeks=date('w'); 
 if ($nweeks==0) $nweeks=7; 
 $ftemp=strtotime(date('Y-m-d 00:00:00',$ftime))-$fweeks*60*60*24; 
 $ntemp=strtotime(date('Y-m-d 00:00:00',time()))+(7-$nweeks)*60*60*24; 
 //echo date('w',$ftemp)."<br/>....<br/>".date('w',$ntemp)."<br/>"; 
 return ($ntemp-$ftemp)/60/60/24/7; 
} 
 
function daysofnow($stime) 
{ 
 $ftime=strtotime($stime); 
 return ceil(abs((time()-$ftime)/(60*60*24))); 
} 
 
function monthsofnow($stime) 
{ 
 $ftime=strtotime($stime); 
 $fmonth=date('m',$ftime); 
 $fyear=date('Y',$ftime); 
 $nmonth=date('m'); 
 $nyear=date('Y'); 
 $result=($nyear-$fyear)*12+$nmonth-$fmonth+1; 
 return $result; 
} 
 
function yearsofnow($stime) 
{ 
 $ftime=strtotime($stime); 
 $fyear=date('Y',$ftime); 
 $nyear=date('Y'); 
 return $nyear-$fyear+1; 
} 
 
// 下面的函数只是加空格用的,不是核心内容,只为美观 
function Lnbsp($data,$num) 
{ 
 $result=trim($data); 
 for($i=$num;$i>=strlen($data);$i--) { 
 $result=' '.$result; 
 } 
 return $result; 
} 
&#63;> 
登入後複製

第三种 情况:明天,下个月和明年的日期,就可以用以下的代码:

$tomorrow = date('Y-m-d',mktime (0,0,0,date("m"),date("d")+1,date("Y"))); 
$nextmonth = date('Y-m',mktime (0,0,0,date("m")+1,date("d")+1,date("Y"))); 
$nextyear = date('Y',mktime (0,0,0,date("m"),date("d"),date("Y")+1)); 
 
echo $tomorrow.'<br/>'; 
echo $nextmonth.'<br/>'; 
echo $nextyear.'<br/>'; 
登入後複製

第四种情况:工作时间(刨除假日)

<&#63; 
$startDate="2001-12-12"; 
$endDate="2002-11-1"; 
 
$holidayArr=array("05-01","05-02","10-01","10-01","10-02","10-03","10-04","10-05","01-26","01-27","01-28","01-29"); 
 //假期日期数组,比方国庆,五一,春节等 
$endWeek=2; 
 //周末是否双休.双休为2,仅仅星期天休息为1,没有休息为0 
 
$beginUX=strtotime($startDate); 
$endUX=strtotime($endDate); 
 
for($n=$beginUX;$n<=$endUX;$n=$n+86400){ 
 $week=date("w",$n); 
 $MonDay=date("m-d",$n); 
 if($endWeek){//去处周末休息 
 if($endWeek==2){ 
 if($week==0||$week==6) continue; 
 } 
 if($endWeek==1){ 
 if($week==0) continue; 
 } 
 } 
 if(in_array($MonDay,$holidayArr)) continue; 
 $totalHour+=10;//每天工作10小时 
} 
echo "开始日期:$startDate<BR>"; 
echo "结束日期:$endDate<BR>"; 
echo "共花了".$totalHour."小时"; 
&#63;> 
登入後複製


第五种情况:给出秒算小时

<&#63;php 
function transform($sec){ 
 
 $output = ''; 
 
 $hours = floor($sec / 3600); 
 $remainSeconds = $sec % 3600; 
 
 $minutes = floor($remainSeconds / 60); 
 $seconds = $sec - $hours * 3600 - $minutes * 60; 
 
 if($sec >= 3600){ 
 $output .= $hours.' h / '; 
 $output .= $minutes.' m / '; 
 } 
 
 if($sec >= 60 && $sec < 3600){ 
 $output .= $minutes.' m / '; 
 } 
 
 return $output .= $seconds.' s '; 
} 
 
echo transform(3231803); 
 
&#63;> 
登入後複製

以上就是为大家提供的php日期时间运算全部实例,希望对大家的学习有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php怎麼將日期轉為時間戳 php怎麼將日期轉為時間戳 Mar 24, 2023 am 10:57 AM

在使用PHP編寫程式時,我們常常需要將日期轉換為時間戳,或是將時間戳轉換為日期。這個過程在PHP中非常簡單,只需要使用幾個簡單的函數就可以輕鬆完成。在本文中,我們將介紹如何將PHP日期轉換為時間戳,同時也討論一些常見的使用場景。

php怎麼會根據年月日判斷是一年的第幾天 php怎麼會根據年月日判斷是一年的第幾天 Apr 22, 2022 pm 05:02 PM

判斷方法:1、使用「strtotime("年-月-日")」語句將給定的年月日轉換為時間戳格式;2、以「date("z",時間戳)+1」語句計算指定時間戳記是一年的第幾天。 date()傳回的天數是從0開始計算的,因此真實天數需要在此基礎上加1。

如何用PHP計算日期差幾個月 如何用PHP計算日期差幾個月 Mar 21, 2023 pm 02:52 PM

計算日期差值在實際應用中非常常見,例如在做網站開發時,我們可能需要計算兩個日期之間的差值,以便正確地顯示時間戳記、倒數計時等。而在計算日期差值時,我們常常需要計算兩個日期的月份差值,以下我們來介紹如何用PHP計算日期差幾個月。

php怎麼取得目前日期和星期幾 php怎麼取得目前日期和星期幾 Jan 07, 2023 pm 04:27 PM

在PHP中,可以使用date()函數來取得目前日期和星期幾。只要將date()函數的第二個參數省略,第一個參數設定為「Y-m-d H:i:s」即可取得目前日期,語法「date("Y-m-d H:i:s")」;而當第一個參數設定為「N」時則可取得是星期幾,語法「date("N")」。 「N」可回到ISO-8601格式數字表示的星期中的第幾天,範圍1(表示星期一)到7(表示星期日)。

php怎麼將字串轉為時間格式 php怎麼將字串轉為時間格式 Mar 27, 2023 pm 04:16 PM

PHP是一種流行的程式語言,廣泛應用於Web開發。在PHP中,字串和日期之間的轉換是一個非常常見的操作。在這篇文章中,我們將討論如何把PHP字串轉成時間格式。

php怎麼把秒轉為時分秒 php怎麼把秒轉為時分秒 Jun 13, 2022 pm 05:42 PM

在php中,可以使用date()函數來將秒數轉換為時分秒的格式,語法「date("H:i:s",時間戳)」。時間戳記是自Unix紀元起到當前時間的秒數,而date()函數可以格式化時間戳,透過第一個參數設定的格式符號將時間戳轉為指定格式的日期字串。格式符「H」表示24小時制,也可用「h」符,它表示12小時制;格式符「i」表示帶有前導零的分鐘值,格式符「s」表示帶前導零秒鐘值。

php怎麼增加一天時間戳 php怎麼增加一天時間戳 Nov 17, 2022 pm 08:02 PM

兩種增加方法:1、直接利用strtotime()函數計算時間間隔,可將間隔後的日期以UNIX時間戳的格式傳回,語法「strtotime("+1 day")」;2、利用time()函數計算當前時間戳,並在當前時間戳記的基礎上加上一天的秒數即可,語法「time()+(1 * 24 * 3600)」。

php中的時間戳記怎麼轉換成時間 php中的時間戳記怎麼轉換成時間 Jan 07, 2023 pm 03:17 PM

在php中,可以使用date()函數來將時間戳轉換為日期時間,該函數可以將時間戳格式化為可讀性更好的日期和時間;語法格式“date(format,時間戳)”,參數format用來指定格式化字符,設定要轉換成的日期格式,例如“Y-m-d H:i:s”,就是將時間戳轉為“年-月-日時:分:秒”格式。

See all articles