日期转换

某一年的第一周开始日期 和 最后一周的结束日期

$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)
%pAM 或 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)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值