Maison > Article > développement back-end > Résumé de l'utilisation courante de la fonction de temps PHP
1. Comment définir le fuseau horaire :
Après php5, vous devez définir vous-même le fuseau horaire, soit en modifiant les paramètres de php.ini, soit en modifiant dans le code.
Définir le fuseau horaire en PHP.INI
date.timezone = PRC
Définir le fuseau horaire en code
1 date_default_timezone_set( 'Asie/Shanghai');//'Asie/Shanghai' Asie/Shanghai
2 date_default_timezone_set('Asie/Chongqing');//Asie/Chongqing' est "Asie/Chongqing"
3 date_default_timezone_set('PRC');//où PRC est "République populaire de Chine"
4 ini_set('date.timezone', 'Etc/GMT-8');
5 ini_set('date.timezone','PRC');
6 ini_set( 'date.timezone','Asie/Shanghai');
7 ini_set('date.timezone','Asie/Chongqing');
checkdate : Vérifiez l'exactitude de la date.
bool checkdate (int $month
, int $day
, int $year
)
la valeur du mois est comprise entre 1 et 12, Day
la valeur est comprise dans la month
donnée donnée la plage de jours à inclure, les années bissextiles ont été prises en compte ; la valeur de l'année est comprise entre 1 et 32 767.
date : Formate l'heure du serveur.
string date ( string $format [, int $timestamp ] ) : renvoie une chaîne générée par un entier timestamp
selon la chaîne de format donnée. Si aucun horodatage n’est donné, l’heure locale actuelle est utilisée. En d'autres termes, timestamp
est facultatif et la valeur par défaut est time().
date("Y-m-d H:i:s", strtotime("-1 days")) //昨天此刻的时间,明天则是 "1 days",前天则是"-2 days";
date("Y-m-d H:i:s", strtotime("0 days")) //今天此刻的时间,等价于date("Y-m-d H:i:s")
U est remplacé par le nombre de secondes depuis une heure de début (comme le 1er janvier 1970).
Y est remplacé par le numéro de l'année à 4 chiffres. 🎜>y est remplacé par le numéro de l'année à 2 chiffres
F est remplacé par le nom anglais complet du mois
M est remplacé par l'abréviation anglaise du mois.
m est remplacé par le. numéro du mois.
z est remplacé par from Le nombre de jours depuis le 1er janvier de l'année en cours
d est remplacé par le nombre de jours
l est remplacé par le nom anglais complet du jour. la semaine.
D est remplacé par l'abréviation anglaise du jour de la semaine
w est remplacé par le jour de la semaine (Chiffres).
H est remplacé par les heures (format 24 heures). .
h est remplacé par des heures (format 12 heures).
i est remplacé par des minutes.
s est remplacé par des secondes.
A est remplacé par "AM" ou "PM".
a est remplacé par "am" ou "pm".
S est remplacé par un suffixe ordinal, tel que : "st", "nd", "rd", "th".
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60secs echo 'Now: '. date('Y-m-d H:i:s') ."\n"; echo 'Next Week: '. date('Y-m-d H:i:s', $nextWeek) ."\n"; // or using strtotime(): echo 'Next Week: '. date('Y-m-d H:i:s', strtotime('+1 week')) ."\n"; echo 'Previous Week: '. date('Y-m-d H:i:s', strtotime('-1 week')) ."\n";//或者用strtotime('-7 day')mktime : Obtenez l'horodatage UNIX. int mktime ([ int
= date("H") [, int $hour
= date("i") [, int $minute
= date("s") [, int $second
= date("n") [, int $month
= date("j") [, int $day
= date("Y") [, int $year
= -1 ]]]]] ]] ) renvoie un horodatage Unix basé sur les arguments donnés. Un horodatage est un entier long contenant le nombre de secondes écoulées depuis l'époque Unix (1er janvier 1970 00:00:00 GMT) jusqu'à une heure donnée. Si le paramètre est illégal, cette fonction renvoie $is_dst
FALSE
(avant PHP 5.1, elle renvoyait -1).
$lastday = mktime(0, 0, 0, 3, 0, 2000);//括号里的参数分别表示 时分秒月天年 echo strftime("Last day in Feb 2000 is: %d", $lastday)."<br>"; $lastday = mktime(0, 0, 0, 4, -31, 2000); echo strftime("Last day in Feb 2000 is: %d", $lastday);Sortie :
Last day in Feb 2000 is: 29 Last day in Feb 2000 is: 29
= time() ] )$timestamp
var_dump($today);Sortie :
array (size=11) 'seconds' => int 27 'minutes' => int 44 'hours' => int 8 'mday' => int 4 'wday' => int 3 'mon' => int 11 'year' => int 2015 'yday' => int 307 'weekday' => string 'Wednesday' (length=9) 'month' => string 'November' (length=8) 0 => int 1446597867microtime : obtenez la valeur d'un millionième de seconde de l'horodatage UNIX de l'heure actuelle. microtime mixte ([ bool
] ) Si le paramètre $get_as_float est donné et que sa valeur est équivalente à TRUE, cette fonction renverra un nombre à virgule flottante. $get_as_float
function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time_start = microtime_float(); // Sleep for a while usleep(10000000);//usleep — 以指定的微秒数延迟执行,10000000是10秒,sleep是延迟多少秒 $time_end = microtime_float(); $time = $time_end - $time_start; echo "Did nothing in $time seconds\n";//Did nothing in 9.9999949932098 secondsstrftime : Formate l'heure du serveur localement. http://php.net/manual/zh/function.strftime.php
gettimeofday : Obtenez l'heure actuelle. http://php.net/manual/zh/function.gettimeofday.php
gmdate : obtenez le décalage horaire entre l'heure actuelle et GMT.easter_date : Calcule la date de Pâques.
easter_days : Calculez le nombre de jours entre Pâques et le 21 mars.
gmmktime : obtenez l'heure moyenne de Greenwich de l'horodatage UNIX.3. Supplément :
$_SERVER['REQUEST_TIME'] 是 PHP 内置的当前页面开始运行时的时间戳,在当前页面运行结束时将 time() - $_SERVER['REQUEST_TIME'] 得到的就是当前页面运行的时间(秒):
一天86400秒
一周 86400*7=604800秒
set_time_limit用法:set_time_limit(秒数);规定从该句运行时起程序必须在指定秒数内运行结束, 超时则程序出错退出.
一个问题举例
$nowdate="1999-08-05" ; $aa=getdate($nowdate); $year=$aa['year']; $month=$aa['mon']; echo $year."</br>"; echo $month;
为何得到:
1970
1
我希望得到:
1999
8
如何解决?
--------------------------------------------------------------------------------
$nowdate="1999-08-05" ; $aa=strtotime($nowdate); $year=date("Y",$aa); $month=date("n",$aa); echo $year."</br>"; echo $month;
--------------------------------------------------------------------------------
$endtime="2004-09-09 18:10:00"; $d1=substr($endtime,17,2); //秒 $d2=substr($endtime,14,2); //分 $d3=substr($endtime,11,2); // 时 $d4=substr($endtime,8,2); //日 $d5=substr($endtime,5,2); //月 $d6=substr($endtime,0,4); //年 echo $d1.'-'.$d2.'-'.$d3.'-'.$d5.'-'.$d4.'-'.$d6."<br>"; echo date("Y-m-d H:i:s")."<br>"; $now_T=mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); echo "此时的time".$now_T."<br>"; $now_S=mktime("$d3","$d2","$d1","$d5","$d4","$d6"); echo "2004-09-09 18:10:00时的time".$now_S."<br>"; $end_TS=($now_T-$now_S)/60; //计算 剩余分钟 echo "相差".$end_TS."分";
输出
00-10-18-09-09-2004 2015-11-04 09:02:08 此时的time1446598928 2004-09-09 18:10:00时的time1094724600 相差5864572.1333333分
常用时间函数封装:
/**
* 将秒数转换为时间(年、天、小时、分、秒)
* @param int $time 秒数比如86400
* @return bool|string
*/
public static function Sec2Time($time)
{
if (is_numeric($time)) {
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if ($time >= 31556926) {
$value["years"] = floor($time / 31556926);
$time = ($time % 31556926);
}
if ($time >= 86400) {
$value["days"] = floor($time / 86400);
$time = ($time % 86400);
}
if ($time >= 3600) {
$value["hours"] = floor($time / 3600);
$time = ($time % 3600);
}
if ($time >= 60) {
$value["minutes"] = floor($time / 60);
$time = ($time % 60);
}
$value["seconds"] = floor($time);
$t = $value["years"] . "年" . $value["days"] . "天" . " " . $value["hours"] . "小时" . $value["minutes"] . "分" . $value["seconds"] . "秒";
return $t;
} else {
return (bool)FALSE;
}
}
/**
*当前日期是本月的第几周
* @param int $date Y-m-d格式的时间,下同
* @return int
* /
function weekOfMonth($date) {
$firstOfMonth = strtotime(date("Y-m-01", strtotime ($date)));
return intval(date("W", $date)) - intval(date("W", $firstOfMonth)) + 1;
}
//获取指定日期所在月的第一天和最后一天
function GetTheMonth($date)
{
$firstday = date("Y-m-01", strtotime($date));
$lastday = date("Y-m-d", strtotime("$firstday +1 month -1 day"));
return array($firstday, $lastday);
}
//PHP获得指定日期所在星期的第一天和最后一天
function getdays($date )
{
$lastday = date('Y-m-d', strtotime("$day Sunday"));
$firstday = date('Y-m-d', strtotime("$lastday -6 days"));
return array($firstday, $lastday);
}
/**
* 获得指定日期的前/后$step(正负表示指定日期所在月的前后的第几个月份)个月的第一天和最后一天日期
* @param $date
* @param $step
* @return string
*/
function AssignTabMonth($date, $step)
{
$date = date("Y-m-d", strtotime($step . " months", strtotime($date)));//得到处理后的日期(得到前后月份的日期)
$firstday = date("Y-m-01", strtotime($date));
$lastday = date("Y-m-d", strtotime("$firstday +1 month -1 day"));
return array($firstday, $lastday);
}
$date = date('Ymd', strtotime($date));
$lastday = date('Ymd', strtotime("$date Sunday"));//周日
$firstday = date('Ymd', strtotime("$lastday -6 days"));//周一
$firstday = date('Ymd', strtotime(date('Y-m-01', strtotime($date))));//指定日期所在月的第一天
$lastday = date("Ymd", strtotime("$firstday +1 month -1 day"));//指定日期所在月的最后一天
$dayCount = $lastday - $firstday + 1; //间隔天数
mysql日期时间函数 http://www.jb51.net/article/23966.htm
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!