ホームページ バックエンド開発 PHPチュートリアル 非常全面的php日期时间运算汇总_php技巧

非常全面的php日期时间运算汇总_php技巧

May 16, 2016 pm 08:05 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPで日付をタイムスタンプに変換する方法 PHPで日付をタイムスタンプに変換する方法 Mar 24, 2023 am 10:57 AM

PHP でプログラムを作成する場合、多くの場合、日付をタイムスタンプに、またはタイムスタンプを日付に変換する必要があります。 PHP ではこのプロセスは非常に単純で、いくつかの単純な関数を使用するだけで簡単に実行できます。この記事では、PHP の日付をタイムスタンプに変換する方法と、いくつかの一般的な使用シナリオについて説明します。

PHPで現在の日付と曜日を取得する方法 PHPで現在の日付と曜日を取得する方法 Jan 07, 2023 pm 04:27 PM

PHP では、date() 関数を使用して現在の日付と曜日を取得できます。 date() 関数の 2 番目のパラメータを省略し、最初のパラメータを「Y-m-d H:i:s」に設定して現在の日付を取得します。構文は「date("Y-m-d H:i:s")」です。最初のパラメータが「N」に設定されている場合、曜日は「date("N")」という構文で取得できます。 「N」は、ISO-8601 形式の数値として曜日を返します。範囲は 1 (月曜日) から 7 (日曜日) です。

PHPで年、月、日に基づいてその年の日を決定する方法 PHPで年、月、日に基づいてその年の日を決定する方法 Apr 22, 2022 pm 05:02 PM

判定方法: 1. 「strtotime("年-月-日")」ステートメントを使用して、指定された年月日をタイムスタンプ形式に変換します; 2. 「date("z", timestamp)+1」ステートメントを使用します。計算するタイムスタンプを指定するときの日付を指定します。 date() によって返される日数は 0 から計算されるため、実際の日数はこの基準に 1 を加算する必要があります。

PHPを使用して日付間の月の差を計算する方法 PHPを使用して日付間の月の差を計算する方法 Mar 21, 2023 pm 02:52 PM

日付の差を計算することは、実際のアプリケーションでは非常に一般的です。たとえば、Web サイト開発を行う場合、タイムスタンプやカウントダウンなどを正しく表示するために、2 つの日付の差を計算する必要がある場合があります。日付の差を計算する場合、2 つの日付の月の差を計算することがよくありますが、PHP を使用して日付の月の差を計算する方法を紹介します。

PHPでデジタル月を英語の月に変換する方法 PHPでデジタル月を英語の月に変換する方法 Mar 21, 2023 pm 02:07 PM

PHP 開発では、デジタル月を英語の月に変換するという状況によく遭遇します。国や言語が異なれば月を表す方法も異なるため、これは一般的な要件です。たとえば、米国と英国では通常、時刻を示すために英語の月の名前が使用されますが、フランスとドイツでは、通常、現地の言語の月の名前が使用されます。この記事では、PHPを使って月番号を英語の月名に変換する方法を紹介します。

PHPで文字列を時刻形式に変換する方法 PHPで文字列を時刻形式に変換する方法 Mar 27, 2023 pm 04:16 PM

PHP は、Web 開発で広く使用されている人気のあるプログラミング言語です。文字列と日付の間の変換は、PHP では非常に一般的な操作です。この記事では、PHP 文字列を時刻形式に変換する方法について説明します。

PHPでタイムスタンプを時刻に変換する方法 PHPでタイムスタンプを時刻に変換する方法 Jan 07, 2023 pm 03:17 PM

PHP では、date() 関数を使用して、タイムスタンプを日付時刻に変換できます。この関数は、タイムスタンプをより読みやすい日付と時刻にフォーマットできます。構文形式は「date(format, timestamp)」です。format パラメーターは、は、書式設定文字を指定し、変換する日付形式を設定するために使用されます。たとえば、タイムスタンプを「年-月-日 時:分:秒」形式に変換する「Y-m-d H:i:s」などです。

PHPで秒を時、分、秒に変換する方法 PHPで秒を時、分、秒に変換する方法 Jun 13, 2022 pm 05:42 PM

PHP では、date() 関数を使用して、「date("H:i:s", timestamp)」という構文で秒を時、分、秒の形式に変換できます。タイムスタンプは、Unix エポックから現在時刻までの秒数です。date() 関数は、タイムスタンプをフォーマットし、最初のパラメーターに設定されたフォーマット文字を使用して、タイムスタンプを指定されたフォーマットの日付文字列に変換できます。形式文字「H」は 24 時間形式を表し、12 時間形式を表す文字「h」も使用できます。形式文字「i」は先頭にゼロが付いた分の値を表し、形式文字「i」は形式文字を表します。 「s」は、先頭にゼロを付けた秒の値を表します。

See all articles