PHP日期与时间应用与实践
时间与日期是日常生活中重要的参照物,相应的程序员必须经常与网站的各种时间打交道,比如什么时候访问量是最高的?某段时间注册的用户是哪些?
本文主要介绍PHP中的强大时间处理功能,以及多种处理方式。
<?php function v($d) {var_dump($d); } /** * 日期是否有效 * checkdate(month(月), day(日), year(年)) */ v(checkdate(4, 31, 2010)); // 0 没有 v(checkdate(4, 30, 2010)); // 1 有 v(checkdate(2, 29, 2012)); // 1 有,是闰年 v(checkdate(2, 29, 2011)); // 0 没有,不是闰年 /** * 日期是否有效 * checkdate(format(参数格式), [timestamp(时间戳)]) * 函数格式参数参照注1 */ v("Today is " . date("F d, Y")); // Today is August 31, 2019 v("Today is " . date("l")); // Today is Saturday // 无关字符结果不可预知 v(date("Today is l the ds day of F Y")); // UTC201931am19 3203 Saturday 3108UTC 3103 31am19 2019f August 2019 // 常用 v(date("Y-m-d H:i:s", time())); // 2019-08-31 08:34:27 /** * 返回时间数组 * gettimeofday([return_float(是否返回浮点型时间戳)]) */ v(gettimeofday(1)); /* 1:1567241095.5499 0(默认):Array ( [sec] => 1567241127 [usec] => 763923 [minuteswest] => -480 [dsttime] => 0 ) */ printf("Server location is %d hours west of PRC.", gettimeofday()['minuteswest'] / 60); // Server location is -8 hours west of PRC. /** * 返回相关时间数组 * getdate([timestamp(时间戳)]) */ v(getdate()); /* Array ( [seconds] => 24 [minutes] => 54 [hours] => 16 [mday] => 31 [wday] => 6 [mon] => 8 [year] => 2019 [yday] => 242 [weekday] => Saturday [month] => August [0] => 1567241664 ) */ /** * 当前时间戳 * time() */ v(time()); // 1567241892 /** * 特定时间戳 * mktime(hour, [minute, second, month, day, year]) */ v(mktime(17, 05, 11, 8, 31, 2019)); // 1558683300 // 计算时间差2019.04.15距今差多少小时 $now = time(); $taxDeadline = mktime(0, 0, 0, 4, 15, 2019); $difference = $now - $taxDeadline; $hours = round($difference / 60 / 60); echo "Only " . number_format($hours) . " hours until the tax deadline!"; // Only 3,329 hours until the tax deadline! // 计算当前日期后X天的日期 $futuredate = strtotime("+45 days"); echo $futuredate; // 1571132005 echo date("F d, Y", $futuredate); // October 15, 2019 $futuredate = strtotime("-45 days"); echo date("F d, Y", $futuredate); // July 17, 2019 // 10周加俩天 $futuredate = strtotime("10 weeks 2 days"); echo date("F d, Y", $futuredate); // November 11, 2019 // Datetime函数 $date1 = new Datetime(); $date2 = new Datetime("25 May 2010"); $date3 = new Datetime("25 May 2010 21:55"); v($date2); /* object(DateTime)#2 (3) { ["date"]=> string(26) "2010-05-25 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "PRC" } */ // 格式化 echo $date2->format("Y-m-d H:i:sa"); // 2010-05-25 00:00:00am // 实例化设置日期 $date = new Datetime(); $date->setDate(2019, 8, 31); echo $date->format("F j, Y"); // August 31, 2019 // 实例化设置时间 $date = new Datetime(); $date->setTime(2019, 8, 31); echo $date->format("H:i:s"); // 03:08:31 // 实例化修改时间 $date = new Datetime("August 31, 2019 17:00"); $date->modify("+27 days"); echo $date->format("Y-m-d h:i:s"); // 2019-09-27 05:00:00 // 计算时间差 $terminationDate = new Datetime("2019-08-22"); $todayDate = new Datetime("today"); $span = $terminationDate->diff($todayDate); echo "Your subscription ends in {$span->format("%d")} days"; // Your subscription ends in 9 days
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138注1:格式参数列表
参数描述示例a小写上午下午am或pmA大写上午下午AM或PMd月中的日期,有前导001-31D表示星期的三字母文本Mon-SunE时区标识America/New_YorkF月份完整表示January-Decemberg12小时格式,没前导01-12G24小时格式,没前导00-23h12小时格式,前导001-12H24小时格式,前导000-23i分钟,前导001-60I夏令时否0,是1j月中日期,没前导01-31l日期的文本表示Monday-SundayL闰年否0,是1m月份的表示数值,有前导001-12M月份的三字母表示Jan-Decn月份的数值表示,没前导01-12o与格林尼治标准时间之差-0500r根据RFC2822格式化时间Tue,19 Apr 2010 22:37:00 -0500s秒,前导000-59S日的序数后缀st、nd、rd、tht月的天数28-31T时区PRCUUNIX纪元以来的秒数123123w星期几的数值表示0周日,6周六W一年中的星期号1-52或53Y年的4位表示1901-2038z年的某一天0-364Z时区偏移-43200-50400网址:PHP日期与时间应用与实践 https://www.yuejiaxmz.com/news/view/16552
相关内容
建立时间管理习惯的关键技巧与实践.docx教育不能脱离日常生活经验与实践
《劳动实践:烹饪与营养》
时间管理的核心挑战与策略:超越效率与实现生活平衡
生活化教学在小学道德与法治课堂中的实践与探索
“美食与生活”劳动实践课堂正式开课
时间管理丨时间管理的价值与意义
新学期生活与学习计划(通用33篇)
时间管理与效率提升
轻松应对打喷嚏:实用方法与日常小贴士