Maison  >  Article  >  développement back-end  >  Résumé de l'utilisation courante de la fonction de temps PHP

Résumé de l'utilisation courante de la fonction de temps PHP

怪我咯
怪我咯original
2017-06-28 10:52:296841parcourir

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');

Fonction et utilisation de l'heure 2.php :

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".

time : obtenez l’horodatage UNIX de l’heure actuelle.

int time ( void ) Renvoie le nombre de secondes écoulées depuis l'époque Unix (1er janvier 1970 00:00:00 GMT) jusqu'à l'heure actuelle.

$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_dstFALSE (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


getdate : Obtenez des informations sur l'heure et la date.

array getdate ([ int

= time() ] )$timestamp

$today = getdate();

var_dump($today);
Sortie :

array (size=11)
  &#39;seconds&#39; =>
int

 27
  &#39;minutes&#39; =>
int

 44
  &#39;hours&#39; =>
int

 8
  &#39;mday&#39; =>
int

 4
  &#39;wday&#39; =>
int

 3
  &#39;mon&#39; =>
int

 11
  &#39;year&#39; =>
int

 2015
  &#39;yday&#39; =>
int

 307
  &#39;weekday&#39; =>
string

 &#39;Wednesday&#39; (length=9)
  &#39;month&#39; =>
string

 &#39;November&#39; (length=8)
  0 =>
int

 1446597867
microtime : 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 seconds
strftime : 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[&#39;year&#39;];
$month=$aa[&#39;mon&#39;];
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.&#39;-&#39;.$d2.&#39;-&#39;.$d3.&#39;-&#39;.$d5.&#39;-&#39;.$d4.&#39;-&#39;.$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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn