日期是日常生活的重要组成部分,因此不需要考虑就可以很容易的使用它们。 PHP还为日期算术提供了强大的工具,使操作日期时间变得简单。
使用time()获得时间戳
PHP的time()
函数为您提供了所需的关于当前日期和时间的所有信息。 它不需要参数,但返回一个整数。
time()
返回的整数表示自1970年1月1日格林威治标准时间午夜以来经过的秒数。此刻称为UNIX纪元,从那以后经过的秒数被称为时间戳。
<?php
echo time();
?>
执行上面示例代码,得到以下类似下面的结果 -
1516176498
上面使用一个数字值来表示日期时间,这是难以理解的。 但是,PHP提供了很好的工具来将时间戳转换成人们熟悉的形式。参考以下示例代码,有助于快速理解日期时间的使用 -
<?php
date_default_timezone_set("Asia/Shanghai");
$timestamp = time();
echo "当前时间戳:".$timestamp."<br/>"; //
echo "当前日期:".date("Y-m-d",strtotime("now"))."<br/>"; //2018-03-31
echo "当前日期:".date("Y-m-d",$timestamp)."<br/>"; //显示格式如 2018-12-01
echo "当前日期:".date("Y.m.d",$timestamp)."<br/>"; //显示格式如 2018.12.01
echo "当前日期:".date("M d Y",$timestamp)."<br/>"; //显示格式如 Dec 01 2018
echo "当前日期时间:".date("Y-m-d H:i:s",$timestamp)."<br/>"; //显示格式如 2018-12-01 12:01:28
echo strtotime("now"), "<br/>";//
echo strtotime("10 September 2018"), "<br/>";//
echo strtotime("+1 day"), "<br/>";//
echo strtotime("+1 week"), "<br/>";//
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "<br/>";//
echo strtotime("next Thursday"), "<br/>";//
echo strtotime("last Monday"), "<br/>";//
echo date("Y-m-d", strtotime("last Monday")), "<br/>";//
执行上面示例代码,得到以下结果 -
当前时间戳:1516172367
当前日期:2018-01-17
当前日期:2018-01-17
当前日期:2018.01.17
当前日期:Jan 17 2018
当前日期时间:2018-01-17 22:59
当前日期时间:2018-01-17 22:59:27
1516172367
1536508800
1516258767
1516777167
1516964369
1516204800
1515945600
2018-01-15
使用getdate()转换时间戳
getdate()
函数可选地接受一个时间戳,并返回一个包含有关日期信息的关联数组。 如果省略了时间戳,它将与time()
返回的当前时间戳一起使用。
下表列出了由getdate()
返回的数组中包含的元素。
编号 | 键 | 描述 | 示例 |
---|---|---|---|
1 | seconds |
秒钟(0-59) | 28 |
2 | minutes |
分钟(0-59) | 12 |
3 | hours |
小时(0-23) | 13 |
4 | mday |
一个月的第几天(1-31) | 30 |
5 | wday |
一周内的第几天(0-6) | 6 |
6 | mon |
一年中的第几个月(1-12) | 10 |
7 | year |
年份(四位数字) | 2019 |
8 | yday |
一年中的第几天(0-365) | 122 |
9 | weekday |
星期几 | Thursday |
10 | month |
月份 | January |
11 | 0 |
时间戳 | 968370208 |
现在您可以完全控制日期和时间。可以以任何格式格式化此日期和时间。
示例
试试下面的例子 -
<?php
$date_array = getdate();
foreach ( $date_array as $key => $val ){
print "$key = $val<br />";
}
$formated_date = "Today's date: ";
$formated_date .= $date_array['mday'] . "/";
$formated_date .= $date_array['mon'] . "/";
$formated_date .= $date_array['year'];
print $formated_date;
?>
这将产生以下结果 -
seconds = 8
minutes = 11
hours = 1
mday = 18
wday = 4
mon = 1
year = 2018
yday = 17
weekday = Thursday
month = January
0 = 1516237868
Today's date: 18/1/2018
使用date()转换时间戳
date()
函数返回表示日期的格式化字符串。 可以对date()
返回的格式进行多种格式控制,并使用必须传递给它的字符串参数。
date(format,timestamp)
date()
可选地接受时间戳,如果省略,则使用当前的日期和时间。 传递给date()
的格式字符串中包含的任何其他数据都将包含在返回值中。
下表列出了格式字符串可以包含的代码 -
编号 | 格式 | 描述说明 | 示例 |
---|---|---|---|
1 | a |
'am' 或 'pm' 小写形式 |
am |
2 | A |
'AM' 或 'PM' 在写形式 |
PM |
3 | d |
一个月中的一天,一个前导零的数字 | 09 |
4 | D |
星期几(三个字母) | Thu |
5 | F |
月份的名称 | January |
6 | h |
小时(12小时制 - 前导零) | 08 |
7 | H |
小时(24小时制 - 前导零) | 22 |
8 | g |
小时(12小时制 - 无前导零) | 9 |
9 | G |
小时(24小时制 - 无前导零) | 20 |
10 | i |
分钟(0-59) | 23 |
11 | j |
一个月的一天(无前导零) | 6 |
12 | l |
一周中的一天 | Thursday |
13 | L |
闰年(’1’为是,’0’为否) | |
14 | m |
一年中的月份(数字 - 前导零) | 02 |
15 | M |
一年中的月份(三个字母) | Jan |
16 | r |
RFC 2822格式化日期 | Thu, 21 Dec 2000 16:01:07 +0200 |
17 | n |
一年中的月份(数字 - 没有前导零) | 2 |
18 | s |
秒钟 | 20 |
19 | U |
时间戳 | 948372444 |
20 | y |
年份(两位数字) | 06 |
21 | Y |
年份(四位数字) | 2019 |
22 | z |
一年中的某一天(0 - 365) | 206 |
23 | Z |
距GMT格林尼治标准时间偏差 | +5 |
示例
试试下面的例子 -
<?php
print date("m/d/y G.i:s<br>", time());
print "Today is ";
print date("j of F Y, a\t g.i a", time());
?>
执行上面示例代码,得到以下结果 -
01/18/18 1.49:09Today is 18 2018f January 2018, at 1.49 am
希望您对如何根据要求格式化日期和时间有很好的了解。 要参考所有日期和时间函数的完整列表在PHP日期和时间函数中给出。