【前言】
? ?本文总结下PHP时间日期相关的知识点
?
【列表】
? ? ? ? ? (1)获取简单时间;(2)自动版权年份;(3)获得简单的时间;(4)获取时区;
? ? ? ? ? (5)创建日期;(6)案例:计算从当前距离国庆放假的天数
?
【详解】
JS:
? ? 先提下JS里时间日期,后来同事推荐了一个处理时间的库moment.js
class="js" name="code">var date = new Date(); console.log(date) //打印结果,例Sun Mar 11 2017 17:48:19 GMT+0800 (中国标准时间)
? ?PHP:
? ? date() 函数用于对日期或时间进行格式化
date(format,timestamp) 日期(格式,时间戳)
(1)获取简单时间
format格式参数是必需的,它们规定如何格式化日期或时间
下面列出了一些常用于日期的字符:
d - 表示月里的某天(01-31)
m - 表示月(01-12)
Y - 表示年(四位数)
1 - 表示周里的某天
其他字符,比如 "/", "." 或 "-" 也可被插入字符中,以增加其他格式。例如
<?php echo "今天是".date("Y年m-d") .date("-l"); //打印结果今天是2017年03-12-Monday ?>
(2)自动版权年份
使用 date() 函数在您的网站上自动更新版本年份,实例:
? 2010-<?php echo date("Y")?>
(3)获得简单的时间
下面是常用于时间的字符,可以以指定的格式输出当前时间
h - 带有首位零的 12 小时小时格式(hours)
i - 带有首位零的分钟(minute)
s - 带有首位零的秒00 -59(second)
a - 小写的午前和午后(am 或 pm)
<?php echo "现在具体时间是".date("h:i:s---a");?>
(4)获取时区------date_default_timezone_set()
? ?如果从代码返回的不是正确的时间,有可能是因为服务器位于其他国家或者被设置为不同时区。
因此,如果需要基于具体位置的准确时间,就必须设置要用的时区。下面的例子把时区设置为 "Asia/Shanghai",然后以指定格式输出当前时间,实例
<?php date_default_timezone_set("Asia/Shanghai"); echo "当前时间是 " . date("h:i:sa"); ?>
? ?注意:如果没有设置时区,那么一般会返回提示警告,例如
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
? ?翻译为:警告:date():依靠系统的时区设置是不安全的。 您*必须*使用date.timezone设置或date_default_timezone_set()函数。 如果您使用这些方法中的任何一种,并且仍然收到此警告,则很可能是拼写错误的时区标识符。 我们现在选择了“UTC”时区,但请设置date.timezone以选择您的时区。
(5)创建日期
? ? ??①. mktime()? ? ? ?转换日期返回时间戳,创建日期
? ? ? date() 函数中可选的时间戳参数规定时间戳。如果未规定时间戳,将使用当前日期和时间(如上所示)
? ? ? mktime() 函数返回日期的 Unix 时间戳,而Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数
mktime(hour,minute,second,month,day,year)
?举个例子,返回2017年12月12日9点38分38秒的时间戳,然后用date()函数进行日期的格式化,代码:
<?php date_default_timezone_set("Asia/Shanghai"); $d = mktime(9,38,38,12,12,2017); echo "制作的具体时间是".date("Y-m-d h:i:s---a",$d); ?>
? ??②.?strtotime()? ? ? 转换字符串返回时间戳,创建日期
strtotime(time,now) 预设时间(具体时间,当前)
? 下面的例子通过 strtotime() 函数创建日期和时间:
<?php $d=strtotime("10:38pm April 15 2015"); echo "创建日期是 " . date("Y-m-d h:i:sa", $d); //输出:创建日期是 2015-04-15 10:38:00am ?> <?php $d=strtotime("now"); echo "当前日期是 " . date("Y-m-d h:i:sa", $d); //输出:当前日期是 2017-03-12 10:38:00am ?>
? ?PHP在将字符串转换为日期这方面非常聪明,所以能够使用各种值:tomorrow,next Saturday,+3 Months等。但是strtotime() 并不完美,所以必须记得检查放入其中的字符串。
? ?案例:输出举例国庆放假还有几天
<?php date_default_timezone_set("Asia/Shanghai"); $d1=strtotime("October 1"); $d2=ceil(($d1-time())/60/60/24); echo "距离国庆放假还有:" . $d2 ." 天。"; ?>
代码解析:
? ? ①time()返回当前时间戳;
? ? ②ceil()函数,向上取整(注意:与四舍五入不同,只要多出一点就向上取)
Math.ceil(5.1)//取整为6 Math.ceil(5.05)//取整为6 Math.ceil(5)//取整为5
具体日期参数,我会在后面的PHP参考手册详解笔录里再做详解
?
?
?
?
.