PHP 日期和时间


在本教程中,我们将学习如何使用一些有用的PHP日期和时间函数来处理日期和时间。

UNIX时间戳简介

计算机系统将日期和时间存储为UNIX时间戳,或者只是时间戳。时间戳是一个整数,它表示要存储的日期和时间与1970-01-01 00:00:00 UTC之间的秒数差。

计算机将日期和时间存储为时间戳,原因如下:

  • 首先,计算机更容易存储整数。
  • 其次,它更容易操作。例如,要向时间戳添加一天,它只添加相应的秒数,即24x60x60 = 86400秒。
  • UNIX时间戳是与时区无关的。这意味着如果您在不同时区的不同计算机上同时计算时间戳,您将得到相同的值。

PHP提供各种直接操作时间戳的日期和时间函数。

PHP获取当前日期和时间

要获取web服务器的当前日期和时间,可以使用time()函数,如下所示:

1
2
3
<?php
 
echo time(); //1573133576

time()以时间戳的形式返回当前时间,因此不方便阅读。幸运的是,PHP提供了几个函数来帮助您将时间戳格式化为人类可读的字符串。

可以使用date()函数将时间戳格式化为指定格式的日期和时间字符串,如下所示:

1
2
<?php
echo date("F j, Y, g:i a",time()); // December 26, 2017, 12:15 pm

date()函数的第二个参数的默认值是当前的日期和时间,因此可以忽略它,如下所示:

1
2
3
<?php
 
echo date("F j, Y, g:i a");

PHP创建时间戳

PHP提供了一些有用的函数来创建时间戳。以下是常用的函数:mktime()、gmmktime()和strtotime()。

从日期和时间值创建时间戳

mktime()函数基于最多6个参数来返回时间戳:年份(19xx)、月份(1-12)、日(1-31)、小时(0-24)、分钟(0-59)和秒(0-59)。

下面的例子显示了1970年1月1日凌晨1:30的时间戳:

1
2
<?php
echo mktime(1,30,0,1,1,1970); // 5400

要从GMT日期和时间创建时间戳,可以使用gmmktime()函数。

1
2
3
<?php
 
echo gmmktime(1,30,0,1,1,1970); // 5400

mktime() 和 gmmktime() 比较

两个函数都是根据相同的输入参数返回UNIX时间戳。
但是,mktime()函数返回一个指定时区的值,而gmmktime()函数返回任何地方都相同的时间戳。

从日期和时间字符串中创建时间戳

PHP提供了strtotime()函数来将日期和时间字符串转换为时间戳,这在某些情况下非常有用。

使用strtotime()函数,您可以传递几乎任何人类可读的格式,例如

1
2
3
4
5
6
7
8
9
10
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
echo strtotime("2nd September 1990 12:00pm"), "\n";
?>

PHP从时间戳获取日期和时间

要从时间戳获取日期和时间值,可以使用getdate()函数。它将返回一个包含日期和时间值的关联数组。

timestamp参数的默认值是现在或者time()函数的结果。

让我们看下面的例子:

1
2
<?php
var_dump(getdate());

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
array(11) {
["seconds"]=>
int(44)
["minutes"]=>
int(34)
["hours"]=>
int(12)
["mday"]=>
int(26)
["wday"]=>
int(4)
["mon"]=>
int(12)
["year"]=>
int(2018)
["yday"]=>
int(359)
["weekday"]=>
string(8) "Thursday"
["month"]=>
string(8) "December"
[0]=>
int(1571334884)
}

下面的例子使用了getdate()函数来显示UNIX时间

1
2
3
4
5
6
7
8
9
10
<?php
 
$ts = strtotime('1 January 1970');
 
$unix_time = getdate($ts);
 
echo sprintf(" Unix 时间, 或者 POSIX 时间, 是 %d.%d.%d",
$unix_time['year'],
$unix_time['mon'],
$unix_time['mday']);


原文链接:https://codingdict.com/