日期/时间函数(汇总)

php 自身带有很多处理日期时间的函数,有些使用场景我们不熟悉的,就会封装自定义函数进行处理。其实很多场景,都可以php内置的函数进行处理,简洁高效。例如判断一个时间时都是合法日期checkdate (),判断是否是闰年gmdate(“L”)等等。

<?php
header("Content-type: text/html; charset=utf-8");
//Date/Time 函数总结
//封装一个打印函数
function viewer($val){
    echo '<pre>';
    var_dump($val);
    echo '<br/>';
}
/**
 * checkdate — 验证一个格里高里日期
 * bool checkdate ( int $month , int $day , int $year )
 * 检查由参数构成的日期的合法性。如果每个参数都正确定义了则会被认为是有效的。
 * 参数
 * month 的值是从 1 到 12。
 * Day 的值在给定的 month 所应该具有的天数范围之内,闰年已经考虑进去了。
 * year 的值是从 1 到 32767。
 *
 * 返回值:如果给出的日期有效则返回 TRUE,否则返回 FALSE。
 */
viewer(checkdate(12, 31, 2000));//bool(true)
viewer(checkdate(2, 29, 2001));//bool(false)  2001年没有2月29日这一天
//date_add  从指定日期添加日、月、年、时、分和秒。
$date=date_create("1980-10-15");
date_add($date,date_interval_create_from_date_string("10 days 10 hours 21 minues 2 years"));
date_add($date,date_interval_create_from_date_string("10 days"));
viewer(date_format($date,"Y-m-d H:i:s"));//string(19) "1982-11-04 10:21:00"
//date_sub — 从指定日期减去日、月、年、时、分和秒。
$date=date_create("2016-09-29");
date_sub($date,date_interval_create_from_date_string("90 days"));
viewer(date_format($date,"Y-m-d"));//string(10) "2016-07-01"
//date_create_from_format  返回根据指定格式进行格式化的新的 DateTime 对象。
$date=date_create_from_format("j-M-Y","25-Sep-2016");
viewer(date_format($date,"Y/m/d"));//string(10) "2016/09/25"

//date_create — 返回一个新的 DateTime 对象,然后格式化日期:
$date=date_create("2016-09-14");
viewer(date_format($date,"Y/m/d"));//string(10) "2016/09/14"

//date_date_set —返回一个新的 DateTime 对象,设置一个新的日期,然后格式化该日期:
$date=date_create();
date_date_set($date,2020,10,15);
viewer(date_format($date,"Y/m/d"));//string(10) "2020/10/15"
//date_default_timezone_get — 取得一个脚本中所有日期时间函数所使用的默认时区
viewer(date_default_timezone_get());//string(13) "Asia/Shanghai"
//date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区
date_default_timezone_set("Asia/Chongqing");
viewer(date_default_timezone_get());//string(14) "Asia/Chongqing"

//date_diff — 计算两个日期间的差值:

$date1=date_create("1984-01-28");
$date2=date_create("1980-10-15");
$diff=date_diff($date1,$date2);
viewer($diff->format("%a days"));//string(10) "1200 days"
//date_format — 返回一个新的 DateTime 对象,然后格式化该日期:
$date=date_create("2016-09-25");
viewer(date_format($date,"Y/m/d H:i:s"));//string(19) "2016/09/25 00:00:00"
//date_get_last_errors — 返回解析日期字符串时的警告和错误:
date_create("aecubdjpoi%&&/");
viewer(date_get_last_errors());

//date_isodate_set — date_isodate_set() 函数根据 ISO 8601 标准设置日期,使用周和天的偏移量(而不是使用一个具体的日期)。
//date_isodate_set(object,year,week,day);
$date=date_create();
date_isodate_set($date,2019,1,2);//2019年第一个周的第二天
viewer(date_format($date,"Y-m-d"));//string(10) "2019-01-01"
//date_modify —  修改时间戳。
$date=date_create("2016-09-25");
date_modify($date,"+4 days");
viewer(date_format($date,"Y-m-d"));//string(10) "2016-09-29"
//date_parse — 返回带有关于指定日期的详细信息的关联数组。
viewer(date_parse("2013-05-01 12:30:45.5"));

//date_sun_info — 返回包含有关指定日期与地点的日出/日落和黄昏开始/黄昏结束的信息的数组
echo "<h3>日期:2016 年 1 月 1 日:</h3>";
$sun_info=date_sun_info(strtotime("2016-01-01"),31.7667,35.2333);
print_r($sun_info);
foreach ($sun_info as $key=>$val)
{
    echo "$key: " . date("H:i:s",$val) . "<br>";
}
//date_sunrise — 返回给定的日期与地点的日出时间
echo("上海,中国:日期:" . date("D M d Y"));
echo("<br>日出时间:");
echo(date_sunrise(time(),SUNFUNCS_RET_STRING,31.22,121.47,90,8));
echo '<br/>';
//date_sunset — 返回给定的日期与地点的日落时间
echo("上海,中国:日期:" . date("D M d Y"));
echo("<br>日出时间:");
echo(date_sunrise(time(),SUNFUNCS_RET_STRING,31.22,121.47,90,8));
echo '<br/>';
//date_time_set — 用于设置时间
$date=date_create("2016-09-25");
date_time_set($date,12,36);
print_r(date_format($date,"Y-m-d H:i:s"));//2016-09-25 12:36:00
echo '<br/>';
//date_timestamp_get — 返回时间戳
$date=date_create();
echo date_timestamp_get($date);
echo '<br/>';
echo time();

//date — 格式化一个本地时间/日期
//getdate — 取得日期/时间信息
viewer(getdate());
//返回带有与时间戳相关的信息的关联数组:
/*
[seconds] - 秒
[minutes] - 分
[hours] - 小时
[mday] - 一个月中的第几天
[wday] - 一周中的第几天
[mon] - 月
[year] - 年
[yday] - 一年中的第几天
[weekday] - 星期几的名称
[month] - 月份的名称
[0] - 自 Unix 纪元以来经过的秒数
*/
//gettimeofday — 取得当前时间

// 输出 gettimeofday() 返回的数组
print_r(gettimeofday());
echo "<br>";
// 输出 gettimeofday() 返回的浮点数
echo gettimeofday(true) . "<br>";
//gmdate — 格式化一个 GMT/UTC 日期/时间

// 输出周几
echo gmdate("l") . "<br>";
//是否是闰年!!!
echo gmdate("L") . "<br>";
// 输出周几、日、月、年,时间,上午或下午
echo gmdate("l jS \of F Y h:i:s A") . "<br>";

// 输出 October 3, 1975 was on a Friday
echo "Oct 3, 1975 was on a ".gmdate("l", mktime(0,0,0,10,3,1975)) . "<br>";

// 在 format 参数中使用常量
echo gmdate(DATE_RFC822) . "<br>";

// 输出类似:1975-10-03T00:00:00+00:00
echo gmdate(DATE_ATOM,mktime(0,0,0,10,3,1975));
//gmmktime — 取得 GMT 日期的 UNIX 时间戳
//gmstrftime — 根据区域设置格式化 GMT/UTC 时间/日期
//idate — 将本地时间日期格式化为整数
echo '<br/>';
echo idate("L",time()) . "<br>";//是否是闰年
//localtime — 取得本地时间
//microtime — 返回当前 Unix 时间戳和微秒数
echo '<br/>';
echo microtime();

//mktime — 取得一个日期的 Unix 时间戳
//strftime — 根据区域设置格式化本地时间/日期
//strptime — 解析由 strftime 生成的日期/时间
//strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳
echo '<br/>';
echo(strtotime("now") . "<br>");
echo(strtotime("15 October 1980") . "<br>");
echo(strtotime("+5 hours") . "<br>");
echo(strtotime("+1 week") . "<br>");
echo(strtotime("+1 week 3 days 7 hours 5 seconds") . "<br>");
echo(strtotime("next Monday") . "<br>");
echo date('Y-m-d',(strtotime("last Sunday")));
//time — 返回当前的 Unix 时间戳


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值