php获取昨天,今天,明天的时间转换

查询最近30天记录
date_default_timezone_set('Etc/GMT-8');    //校正时区
$last_day = date('Y-m-d H:i:s', time() - 60*60*24*30);    //生成日期
$sql = "select * from `table` where `add_time` >= '".$last_day."'";
$time = strtotime('-30 day');
$sql = 'select * from table where add_time >='.$time
mysql_query($sql);

获取昨天0点到23点方法
$ytime = strtotime(date("Y-m-d",strtotime("-1 day")));//昨天开始时间戳
$yetime = $ytime+24 * 60 * 60-1;//昨天结束时间戳
var_dump($yetime);die;

获取昨天0点到当天结束时间
$start_time = strtotime(date("Y-m-d",strtotime("-1 day")));   //昨天开始时间
$end_time = $start_time+24 * 60 * 60-1;  //昨天结束时间
print_r(date("Y-m-d H:i:s   ",$end_time));

获取当天的零时和二十四时(0点和24点)
$todayStart= date('Y-m-d 00:00:00', time()); //2019-01-17 00:00:00
$todayEnd= date('Y-m-d 23:59:59', time()); //2019-01-17 23:59:59

表示某一个时间的前一天12点
date_default_timezone_set('PRC');
$now = time(); //某个时间,可以是任意时间戳
$ago = strtotime('-1 day 12:00:00', $now); //一天前的12:00:00的时间戳,两天前-2 day即可
echo date('Y-m-d H:i:s', $ago);

获取当天的00:00:00~23:59:59
这是转换后的格式:
$todayStart= date('Y-m-d 00:00:00', time()); //2016-11-01 00:00:00
$todayEnd= date('Y-m-d 23:59:59', time()); //2016-11-01 23:59:59

这是时间戳格式:
$year = date("Y");
$month = date("m");
$day = date("d");
$start = mktime(0,0,0,$month,$day,$year);//当天开始时间戳
$end= mktime(23,59,59,$month,$day,$year);//当天结束时间戳

获取今天、昨天、明天的日期
echo "今天:".date("Y-m-d")."<br>";       
echo "昨天:".date("Y-m-d",strtotime("-1 day")), "<br>";       
echo "明天:".date("Y-m-d",strtotime("+1 day")). "<br>";    
echo "一周后:".date("Y-m-d",strtotime("+1 week")). "<br>";       
echo "一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")). "<br>";       
echo "下个星期四:".date("Y-m-d",strtotime("next Thursday")). "<br>";       
echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."<br>";       
echo "一个月前:".date("Y-m-d",strtotime("last month"))."<br>";       
echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."<br>";       
echo "十年后:".date("Y-m-d",strtotime("+10 year"))."<br>";      
strtotime()函数的作用是将日期时间描述解析为 Unix 时间戳
int strtotime ( string time [, int now] )

星期几获取代码
date("l");
//data就可以获取英文的星期比如Sunday
date("w");
//这个可以获取数字星期比如123,注意0是星期日
获取中文星期可以这样
$weekarray=array("日","一","二","三","四","五","六");
echo "星期".$weekarray[date("w")];
获取指定日期是:
$weekarray=array("日","一","二","三","四","五","六");
echo "星期".$weekarray[date("w","2011-11-11")];
因为date函数非常强大,他完全可以胜任一切这样的工作我附个手册里的表吧

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"


时间轴开发(刚刚、5分钟前、昨天10:23等)
function tranTime($time) {
$rtime = date("m-d H:i",$time);
$htime = date("H:i",$time);
$time = time() - $time;
if ($time < 60) {
$str = '刚刚';
}
elseif ($time < 60 * 60) {
$min = floor($time/60);
$str = $min.'分钟前';
}
elseif ($time < 60 * 60 * 24) {
$h = floor($time/(60*60));
$str = $h.'小时前 '.$htime;
}
elseif ($time < 60 * 60 * 24 * 3) {
$d = floor($time/(60*60*24));
if($d==1)
$str = '昨天 '.$rtime;
else
$str = '前天 '.$rtime;
}
else {
$str = $rtime;
}
return $str;
}

函数tranTime()中的参数$time必须为Unix时间戳,如果不是请先用strtotime()将其转换成Unix时间戳。上面的代码一看就明白了,不用再多述。
$times="1286861696 ";
echo tranTime($times);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值