时间参数详解
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
D - 星期几,三个英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
l - 星期几,英文全名; 如: "Friday"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
实例代码
1 <?php 2 $timetype = isset($request['timetype']) ? (int)$request['timetype'] : 3;//选择时间 1:今天 2:本周 3:本月 4:全年 3 switch ($timetype) { 4 case 1://【今天】的开始和结束时间戳 5 $begintime = mktime(0, 0, 0, date('m'), date('d'), date('Y')); 6 $endtime = mktime(23, 59, 59, date('m'), date('d'), date('Y')); 7 //方法2 8 //$begintime = strtotime(date('Y-m-d 00:00:00')); 9 //$endtime = strtotime(date('Y-m-d 23:59:59')); 10 break; 11 case 2://【本周】的开始和结束时间戳 12 $begintime = mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")); 13 $endtime = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y")); 14 break; 15 case 3://【本月】的开始和结束时间戳 16 $begintime = mktime(0, 0, 0, date('m'), 1, date('Y')); 17 $endtime = mktime(23, 59, 59, date('m'), date('t'), date('Y')); 18 break; 19 case 4://【全年】的开始和结束时间戳 20 $begintime = mktime(0, 0, 0, 1, 1, date("Y")); 21 $endtime = mktime(23, 59, 59, 12, 31, date("Y"));
break; 22 } 23 ?>
指定某个月的开始和结束时间戳
1 <?php 2 $dateline = strtotime($date); // $date如:2019-10 3 $firstdaystr = strtotime(date("Y-m-01", $dateline)); 4 $lastdaystr = strtotime(date('Y-m-d 23:59:59', strtotime("$date +1 month -1 day"))); 5 ?>
大月小月问题
1 <?php 2 $date = date('Y-m-d',strtotime('last day of -1 month',strtotime('2018-07-31')));//(加上last day of)结果为 2018-06-30 否则 2018-07-01 3 $date = date('Y-m-d',strtotime('first day of -1 month',strtotime('2018-07-31')));//(加上first day of)结果为 2018-06-01 否则 2018-07-01 4 $date = date('Y-m-d',strtotime('last day of +1 month',strtotime('2018-08-31')));//(加上last day of)结果为 2018-09-30 否则 2018-10-01 5 6 ?>
指定日期语言
1 1 <?php 2 2 setlocale(LC_TIME, 'it');//切换到意大利 3 echo utf8_encode( strftime("%a %d %b %Y", $dateline) );//传入时间戳 4 setlocale(LC_TIME, NULL);重置到当前系统默认地区 5 3 ?>
时区设置
<?php //方法1、通过时区 date_default_timezone_set("UTC/GMT-8");//这是格林威治标准时间,得到的时间和默认时区是一样的 date_default_timezone_set("Etc/GMT+8");//这里比格林威治标准时间慢8小时 date_default_timezone_set("Etc/GMT-8");//这里比格林威治标准时间快8小时 //方法2、通过区域 区域列表:https://www.php.net/manual/zh/timezones.php date_default_timezone_set('America/New_York'); ?>
生成某月的日期列表
<?php /** * @description 生成某个月的所有日期 * @param $date 某个月2020-3 * @return array */ function get_month_day($date){ $dateline = strtotime($date); $now_date = date('Y-m-d');//当前日期 $new_now_month = date('Y-n',strtotime($now_date)); //如果是当前月,仅显示已经过的日期 if($date == $new_now_month){ $j = date('j'); }else{ $j = date("t",$dateline); } //获取指定月第一天时间戳 $start_time = strtotime(date('Y-m-01',$dateline)); $array = array(); for($i=0;$i<$j;$i++){ $array[] = date('Y-m-d',$start_time+$i*86400); } return $array; } ?>