某一年的第一周开始日期 和 最后一周的结束日期
$year = 2018;
$time['start'] = strtotime($year . 'W' . '01');
$first_day = date('Y-m-d', $time['start']);
$weeks_num = date('W', mktime(0,0,0,12,30,$year));//计算2018年有多少周
$time['start'] = strtotime($year . 'W' . $weeks_num);
$time['end'] = strtotime('+1 week' , $time['start']);
$last_day = date('Y-m-d', $time['end']);
mysql:
DATE_FORMAT(date, format);//date:合法的日期 , format:规定日期/时间的格式
format格式:
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
mysql:DATE_FORMAT(日期字段, %u);//当前日期周数(今年的第几周)
echo date('z', time());//获取当前是一年中的第多少天
FROM_UNIXTIME(unix_timestamp,format);//格式化MYSQL时间戳函数
SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S');
//返回 2009-02-14 07:31:30
时间条件(开始时间-结束时间)
返回数据
//时间条件
if($start_time=='' && $end_time==''){
$date = '不限';
}elseif ($start_time!='' and $end_time!=''){
$date = $start_time.' 至 '.$end_time;
}elseif ($start_time!='' and $end_time==''){
$date = $start_time.' 至 当前日期';
}else{
$date = '-- 至 '.$end_time;
}
获取当前是星期前 0-6 星期日-星期六
$now_time = strtotime(date('Y-m-d'));
$now_weekday = date('w', $now_time); // 获取当前是星期前 0-6 星期日-星期六
$now_weekday = $now_weekday < 1 ? $now_weekday+7 : $now_weekday;
//php获取上周起始时间戳和结束时间戳
$beginLastweek = $now_time-($now_weekday+6)*86400;
$endLastweek = $beginLastweek+(6*86400);
$beginLastweek = date('Y-m-d 00:00:00', $beginLastweek);
$endLastweek = date('Y-m-d 23:59:59', $endLastweek);
获取当前时间前一周起始时间和结束时间
$now_time = strtotime(date('Y-m-d'));
$now_weekday = date('w', $now_time); // 获取当前是星期前 0-6 星期日-星期六
$now_weekday = $now_weekday < 1 ? $now_weekday+7 : $now_weekday;
//php获取上周起始时间戳和结束时间戳
$beginLastweek = $now_time-($now_weekday+3)*86400;
$endLastweek = $beginLastweek+(($now_weekday+3)*86400);
$beginLastweek = date('Y-m-d 00:00:00', $beginLastweek);
$endLastweek = date('Y-m-d 23:59:59', $endLastweek);
gmdate();//格式化一个 GMT/UTC 日期/时间
<?php
echo date("M d Y H:i:s", mktime (0,0,0,1,1,2000));
echo gmdate("M d Y H:i:s", mktime (0,0,0,1,1,2000));
?>
日期处理:
$t_c_time = strtotime('2018-07-11');
$cfg_week = isset($cfg_week) && 0 < count($cfg_week) ? $cfg_week : ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
$week_idx = date('w', $t_c_time); //记录时间所处星期几(索引,0开始[星期天])
$tmp_create_day = strtotime(date('Y-m-d', $t_c_time));
$tmp_today = strtotime(date('Y-m-d', time()));
$d_diff = ceil(($tmp_today - $tmp_create_day) / 60 / 60 / 24);
$show_day = (0 == $d_diff ? '今天' : '昨天') . '|' . $cfg_week[$week_idx];
echo $show_day;
//输出 今天|星期三
getdate($timestamp);//取得日期/时间信息
返回一个根据 timestamp
得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。
例:
<?php
$today = getdate();
print_r($today);
?>
以上例程的输出类似于:
Array
(
[seconds] => 40 //数字型秒
[minutes] => 58 //数字型分钟
[hours] => 21 //数字型小时
[mday] => 17 //月份中的第几天
[wday] => 2 //星期中的第几天
[mon] => 6 //数字型月份
[year] => 2003 //年份
[yday] => 167 //一年中的第几天
[weekday] => Tuesday //英文型星期
[month] => June //英文型月份
[0] => 1055901520 //时间戳
)
可以获取两个时间段的月数和月份值,用于统计图的横纵轴
$day = '2018-01-23';
$time = date('Y-m-d',time());
// $diff = (strtotime($day) - strtotime($time))/86400;//计算两个时间段的间隔天数
$date1 = explode('-', $day);
$date2 = explode('-',$time);//将格式化的日期分隔成数组形式
// $diff = abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]);//计算两个时间段的间隔月数
// echo $diff;
$day = date('m',strtotime($day));
$time = date('m', strtotime($time));//获取月
$day = ltrim($day, '0');
$time = ltrim($time, '0');//去掉一位数月份前的0
$date = [];
for ($i=$day; $i<=$time; $i++) {
$date['x_axis'][] = $i . '月';
}
print_r($date);
microtime();//返回当前 Unix 时间戳和微秒数
例:
echo microtime();
0.62917900 1537424451
计算两个日期之间相差的月数(2017-01~2018-08)
$date1 = '2018-01';
$date2 = '2017-10';
$date1 = explode('-', $date1);
$date2 = explode('-', $date2);
$res = ($date1[0]-$date2[0]) * 12 + ($date1[1] - $date2[1]);
echo $res;
//返回值为int(3)