Heim >Backend-Entwicklung >PHP-Tutorial >Zusammenfassung der allgemeinen Verwendung von PHP-Zeitfunktionen

Zusammenfassung der allgemeinen Verwendung von PHP-Zeitfunktionen

怪我咯
怪我咯Original
2017-06-28 10:52:296954Durchsuche

1. So stellen Sie die Zeitzone ein:

Nach PHP5 müssen Sie die Zeitzone selbst festlegen, indem Sie entweder die Einstellungen von php.ini ändern oder es im Code.

Zeitzone in PHP.INI festlegen

date.timezone = PRC

Zeitzone im Code festlegen

1 date_default_timezone_set( 'Asia/Shanghai');//'Asia/Shanghai' Asia/Shanghai

2 date_default_timezone_set('Asia/Chongqing');//Asia/Chongqing' ist „Asia/Chongqing“

3 date_default_timezone_set('PRC');//wobei PRC „Volksrepublik China“ ist

4 ini_set('date.timezone', 'Etc/GMT-8');

5 ini_set('date.timezone','PRC');

6 ini_set( 'date.timezone','Asia/Shanghai');

7 ini_set('date.timezone','Asia/Chongqing');

2.php-Zeitfunktion und -verwendung:

Prüfdatum: Überprüfen Sie die Richtigkeit des Datums.

bool checkdate (int $month, int $day, int $year)

Monatswert liegt zwischen 1 und 12, DayWert liegt innerhalb des angegebenen month Innerhalb Der Bereich der Tage, der einbezogen werden sollte, berücksichtigt Schaltjahre; der Wert des Jahres liegt zwischen 1 und 32767.

Datum: Formatieren Sie die Uhrzeit des Servers.

string date ( string $format [, int $timestamp ] ): Gibt einen String zurück, der durch eine Ganzzahl timestamp gemäß dem angegebenen Formatstring generiert wird. Wenn kein Zeitstempel angegeben wird, wird die lokale aktuelle Zeit verwendet. Mit anderen Worten: timestamp ist optional und der Standardwert ist 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 wird durch die Anzahl der Sekunden seit einem Startzeitpunkt (z. B. 1. Januar 1970) ersetzt

Y wird durch die 4-stellige Jahreszahl ersetzt
y wird durch die zweistellige Jahreszahl ersetzt
F wird durch den vollständigen englischen Namen des Monats ersetzt
m wird durch den Monat ersetzt Zahl.
z wird durch die Anzahl der Tage seit dem 1. Januar des aktuellen Jahres ersetzt.
d wird durch die Anzahl der Tage ersetzt Woche.
D wird durch die englische Abkürzung für den Wochentag ersetzt.
w wird durch den Wochentag (Zahlen) ersetzt.
H wird durch Stunden ersetzt (24-Stunden-Format).
h wird durch Stunden ersetzt (12-Stunden-Format).
i wird durch Minuten ersetzt.
s wird durch Sekunden ersetzt.
A wird durch „AM“ oder „PM“ ersetzt.
a wird durch „am“ oder „pm“ ersetzt.
S wird durch ein Ordnungssuffix ersetzt, wie zum Beispiel: „st“, „nd“, „rd“, „th“.

Zeit : Holen Sie sich den UNIX-Zeitstempel der aktuellen Zeit.

int time (void) Gibt die Anzahl der Sekunden seit der Unix-Epoche (1. Januar 1970, 00:00:00 GMT) bis zur aktuellen Zeit zurück.

mktime: UNIX-Zeitstempel abrufen.
$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')

int mktime ([ int

= date("H") [, int

= date("i") [, int $hour = date("s") [, int $minute = date("n") [, int $second = date("j") [, int $month = date("Y") [, int $day = -1 ]]]]] ]] ) gibt einen Unix-Zeitstempel basierend auf den angegebenen Argumenten zurück. Ein Zeitstempel ist eine lange Ganzzahl, die die Anzahl der Sekunden seit der Unix-Epoche (1. Januar 1970, 00:00:00 GMT) bis zu einem bestimmten Zeitpunkt enthält. Wenn der Parameter unzulässig ist, gibt diese Funktion $year$is_dst zurück (vor PHP 5.1 gab sie FALSE-1 zurück).

Ausgabe:
$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);


Last day in Feb 2000 is: 29
Last day in Feb 2000 is: 29


getdate: Uhrzeit- und Datumsinformationen abrufen.

array getdate ([ int

= time() ] )

$timestamp$today = getdate();

Ausgabe:
var_dump($today);

Mikrozeit: Ermitteln Sie den Wert einer Millionstelsekunde des UNIX-Zeitstempels der aktuellen Zeit.
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

mixed microtime ([ bool

] ) Wenn der Parameter $get_as_float angegeben ist und sein Wert TRUE entspricht, gibt diese Funktion eine Gleitkommazahl zurück.

$get_as_float

strftime: Formatiert die Zeit des Servers lokal. http://php.net/manual/zh/function.strftime.php
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

gettimeofday

: Aktuelle Uhrzeit abrufen. http://php.net/manual/zh/function.gettimeofday.phpgmdate: Ermitteln Sie den Zeitunterschied zwischen der aktuellen Zeit und GMT.

easter_date

: Osterdatum berechnen.

easter_days

: Berechnen Sie die Anzahl der Tage zwischen Ostern und dem 21. März. gmmktime: Ruft die Greenwich Mean Time des UNIX-Zeitstempels ab.

3. Ergänzung:

$_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


Das obige ist der detaillierte Inhalt vonZusammenfassung der allgemeinen Verwendung von PHP-Zeitfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn