视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php关于日期时间的操作
2020-11-27 14:20:10 责编:小采
文档


日期时间在程序语言中通常用于显示以及条件。更为具体一点来说可能是希望以某种格式显示时间,显示某个时区的时间,获取一个星期之后的时间,获取本星期开始的时间戳,将某种格式的时间转换成另一种等等。

1. 显示当前时间

使用date函数,格式为date(format[, timestamp]),它接受两个参数,第一个参数为时间格式字符串,第二个参数为时间戳,时间戳可选,如果不填的话则是当前时间的时间戳。

echo date('Y-m-d H:i:s'); // 2018-12-25 09:31:22

像这样就可以打出当前的年月日时分秒来了,当然根据格式字符串的不同还可以打出其他格式的时间:

echo date('l dS of F Y h:i:s A'); // Tuesday 25th of December2018 09:34:54 AM

解释一下上面所用到的格式字符:

Y 完整年份,4位数字

m 有前导0的月份

d 月中的第几天,有前导0

H 24小时制的小时,有前导0

i 分钟,有前导0

s 秒,有前导0

l 星期几的完整英文(注意是小写的L,不是大写的i)

S 每月天数的后缀(可能是st, nd, rd, th)

F 月份的完整英文

h 12小时制的小时,有前导0

A 上午或下午(AM或PM)

这只是列举了其中的一部分,更为完整的格式字符可以去查阅官方手册。

2. 显示某个时区的世界

比如通过设置时区,我们可以获得美国的时间:

date_default_timezone_set("America/New_York");
echo date('Y-m-d H:i:s'); // 2018-12-24 20:54:36

上面就是美国纽约的世界,时区要求的字符串可以查阅php文档,如果不合法将会产生一条警告,同时时区也不会设置成功,而是使用默认的时区。

3. 计算的时间

比如本周开始的时间,本月开始的时间,一个星期之后的时间等,可以使用strtotime函数来帮我们完成这一点。

strtotime(time[, now = time()]) 可以将任何描述时间日期的字符串转换成unix时间戳,第一个参数是描述字符串,第二个参数是用来计算的时间戳(默认为当前时间戳)。看描述就知道是一个很灵活的函数,但要注意它毕竟这是一个函数,不会智能到“任何”描述时间的字符串它都能理解,还是需要特定格式的——特别是咱们中国地区,就不要指望它能理解“2018年12月25日”是什么意思了。但是它仍然很强大,前面描述的功能都可以做到。

echo '下个星期的时间:' . date('Y-m-d H:i:s', strtotime('+1 week')); // 下个星期的时间:2019-01-01 10:12:16
echo '本周开始时间:' . date('Y-m-d H:i:s', strtotime('this week Monday')); // 本周开始时间:2018-12-24 00:00:00
echo '明天开始时间:' . date('Y-m-d 00:00:00', strtotime('+1 day')); // 明天开始时间:2018-12-26 00:00:00
echo '1天2小时3分5秒之后的时间:' . date('Y-m-d H:i:s', strtotime('+1 day 2 hours 3 minutes 5 seconds')); // 1天2小时3分5秒之后的时间:2018-12-26 12:24:15

4. 根据具体值创建时间

如果你知道某个时间的年、月、日、时、分、秒,想用他们来创建一个时间,可以选择用他们拼接成一个时间字符串然后用strtotime来解析,或者在这种情况下也可以使用更为稳妥的方法:mktime。

mktime(hour, minute, second, month, day, year) 需要注意的是参数的顺序和我们的习惯不太相同,为:时 分 秒 月 日 年

$time = mktime(3, 10, 15, 2, 15, 2014);
echo date('Y-m-d H:i:s', $time); // 2014-02-15 03:10:15

5. 对象类型的时间操作

php也支持对象类型的时间操作

$date_obj = date_create(); // 创建一个DateTime对象
echo $date_obj->format('Y-m-d H:i:s'); // 2018-12-25 10:45:08
 
date_add($date_obj, date_interval_create_from_date_string("3 days")); // 给对象增加3天
echo $date_obj->format('Y-m-d H:i:s'); // 2018-12-28 10:45:08
 
date_sub($date_obj, date_interval_create_from_date_string("2 days")); // 给对象减少2天
echo $date_obj->format('Y-m-d H:i:s'); // 2018-12-26 10:45:08
 
echo '时区为:' . timezone_name_get(date_timezone_get($date_obj)); // 时区为:PRC (中国时区,获取时区并打印)

与过程化的风格不同,不过可以实现的功能其实还是比较类似的。

更多PHP相关知识,请访问PHP中文网!

下载本文
显示全文
专题