傅令江的光影色彩世界
留住记忆的点滴
  • 首页
  • 文学
    • 诗词鉴赏
    • 美文共读
    • 原创
  • 编程
    • php
    • asp
    • .net
    • VB
    • C/C++
    • 易语言
    • js
    • 其他
    • 逆向
  • 运维
    • windows
    • linux
  • 光影色彩
    • 电影
    • 音乐
  • 科技
    • 互联网
    • 手机
  • 生活
    • 情感
  • 微语
11月242015

PHP时间日期操作增减(date strtotime) 加一天 加一月

作者:令狐江   发布:2015-11-24 17:09   分类:php   阅读:5493次   评论:0条  

时间函数是PHP里面的日常函数,时间的默认时期,今天、昨天、明天 、上一周、下一周,本周开始时间和结束时间;本月开始时间结束时间;上月开始时间结束时间,指定日期的周一和周日等等方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
date_default_timezone_set('PRC'); //默认时区
//当前的时间增加5天
$date1 = "2014-11-11";
echo date('Y-m-d',strtotime("$date1 +5 day"));  //输出结果:2014-11-16
//相应地,要增加月,年,将day改成month或year即可
 
 
//+++ 今天、昨天、明天 、上一周、下一周 +++++++++
echo "今天:",date("Y-m-d",time()),"<hr>";
echo "昨天:",date("Y-m-d",strtotime("-1 day")), "<hr>";
echo "明天:",date("Y-m-d",strtotime("+1 day")), "<hr>";
echo "一周后:",date("Y-m-d",strtotime("+1 week")), "<hr>";
echo "一周零两天四小时两秒后:",date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")), "<hr>";
echo "下个星期四:",date("Y-m-d",strtotime("next Thursday")), "<hr>";
echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."<hr>";
echo "一个月前:".date("Y-m-d",strtotime("last month"))."<hr>";
echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."<hr>";
echo "十年后:".date("Y-m-d",strtotime("+10 year"))."<hr>";

php 本周开始时间和结束时间;本月开始时间结束时间;上月开始时间结束时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* 功能:取得给定日期所在周的开始日期和结束日期
* 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
* $first 一周以星期一还是星期天开始,0为星期天,1为星期一
* 返回:数组array("开始日期", "结束日期");
*
*/
 
function aweek($gdate = "", $first = 0){
    if(!$gdate) $gdate = date("Y-m-d");
    $w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
    $dn = $w ? $w - $first : 6;//要减去的天数
    //本周开始日期
    $st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
    //本周结束日期
    $en = date("Y-m-d", strtotime("$st +6 days"));
    //上周开始日期
    $last_st = date('Y-m-d',strtotime("$st - 7 days"));
    //上周结束日期
    $last_en = date('Y-m-d',strtotime("$st - 1 days"));
    return array($st, $en,$last_st,$last_en);//返回开始和结束日期
}
 
echo implode("|", aweek("", 1)).'<br />';
//echo date("Y-m-d",strtotime("time()"));
echo '本周第一天(星期日为一周开始):'.date('Y-m-d', time()-86400*date('w')).'<hr>';
echo '本周第一天(星期一为一周开始):'.date('Y-m-d', time()-86400*date('w')+(date('w')>0?86400:-6*86400)).'<hr>';
echo '本月第一天:'.date('Y-m-d', mktime(0,0,0,date('m'),1,date('Y'))).'<hr>';
echo '本月最后一天:'.date('Y-m-d', mktime(0,0,0,date('m'),date('t'),date('Y'))).'<hr>';
//上个月的开始日期
$m = date('Y-m-d', mktime(0,0,0,date('m')-1,1,date('Y')));
//上个月共多少天
$t = date('t',strtotime("$m"));
echo '上月第一天:'.date('Y-m-d', mktime(0,0,0,date('m')-1,1,date('Y'))).'<hr>';
echo '上月最后一天:'.date('Y-m-d', mktime(0,0,0,date('m')-1,$t,date('Y'))).'<hr>';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//PHP手册上有一个这个方法,用来返回指定日期的周一和周日
function get_week_range($week, $year){
    $timestamp = mktime(1,0,0,1,1,$year);
    $firstday = date("N",$timestamp);
    if($firstday >4){
        $firstweek = strtotime('+'.(8-$firstday).' days', $timestamp);
    }else{
        $firstweek = strtotime('-'.($firstday-1).' days', $timestamp);
    }
    $monday = strtotime('+'.($week - 1).' week', $firstweek);
    $sunday = strtotime('+6 days', $monday);
 
    $start = date("Y-m-d", $monday);
    $end = date("Y-m-d", $sunday);
 
    return array($start, $end);
}
 
//strtotime获取本周第一天和最后一天方法的BUG
 
//PHP手册上有一个这个方法,用来返回指定日期的周一和周日
 
function get_week_range2($week, $year){
    $timestamp = mktime(1,0,0,1,1,$year);
    $firstday = date("N",$timestamp);
    if($firstday >4){
        $firstweek = strtotime('+'.(8-$firstday).' days', $timestamp);
    }else{
        $firstweek = strtotime('-'.($firstday-1).' days', $timestamp);
    }
    $monday = strtotime('+'.($week - 1).' week', $firstweek);
    $sunday = strtotime('+6 days', $monday);
 
    $start = date("Y-m-d", $monday);
    $end = date("Y-m-d", $sunday);
 
    return array($start, $end);
}

但在跨年的时候使用会有问题
例如2011年的12月31日周六和2012年1月1日周日,拿到的周一和周日完全不同
2011年12月31日拿合到的周一和周日分别对应
2011-12-26
2012-01-01

但2012年1月1日拿 到的周一和周日分别对应
2012-01-02
2012-01-04

原因为传进去的方法的周为第53周,但是年为2011年,所以认为2011的第53周,所以计算有误,解决方法为,
如果周为大于10(因为一月个月不可能有10周),且月份为1的时候,将年减1处理

1
2
3
if(date('m',$last_week_time) == '01' and $tmp_last_week > 10){
    $last_week_year--;
}

一寸光阴一寸金,寸金难买寸光阴.




本文固定链接: https://www.fulingjiang.cn/php/137.html

blogger
该日志由 令狐江 于2015-11-24 17:09 Tuesday发表在 php 分类下。
版权所有:《傅令江的光影色彩世界》 → 《PHP时间日期操作增减(date strtotime) 加一天 加一月》;
除特别标注,本博客所有文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:
上一篇::可隐藏与不隐藏域名转向代码(自动跳转代码)
下一篇:分布式Web服务器架构

热门文章

  • 兄弟二周年祭

相关文章

  • php用curl调用接口方法,get和post两种方式
  • PHP加密文件破解代码
  • 简单几步为你的Typecho开启Redis缓存
  • PHP实现最简单爬虫原型-实现蜘蛛,但是很弱这个事思路
  • php方法或者类里引入外部变量
取消回复

发表评论

亲,头像对么?

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


  • 日历

  • 存档

    • 2024年10月(1)
    • 2023年2月(1)
    • 2022年11月(1)
    • 2022年10月(10)
    • 2022年9月(13)
    • 2022年8月(2)
    • 2022年7月(14)
    • 2022年6月(2)
    • 2022年5月(8)
    • 2022年4月(7)
    • 2022年3月(13)
    • 2022年2月(2)
    • 2022年1月(9)
    • 2021年12月(2)
    • 2021年11月(4)
    • 2021年10月(2)
    • 2021年9月(6)
    • 2021年7月(4)
    • 2021年6月(3)
    • 2021年5月(3)
    • 2021年4月(11)
    • 2021年3月(13)
    • 2021年2月(2)
    • 2021年1月(1)
    • 2020年12月(1)
    • 2020年4月(5)
    • 2019年9月(1)
    • 2019年8月(1)
    • 2019年5月(3)
    • 2018年3月(1)
    • 2017年10月(1)
    • 2016年7月(1)
    • 2016年4月(1)
    • 2015年12月(1)
    • 2015年11月(3)
    • 2015年9月(1)
    • 2015年8月(10)
    • 2015年7月(1)
    • 2015年6月(1)
    • 2015年4月(1)
    • 2015年3月(3)
    • 2015年2月(8)
    • 2015年1月(4)
    • 2014年12月(1)
    • 2014年11月(27)
    • 2014年10月(13)
    • 2014年9月(14)
    • 2014年8月(26)
    • 2014年7月(21)
  • 最新评论

    • 令狐江:
      喜欢这首歌是因为可以引起共鸣!
  • 链接

    • 演讲稿网
    • Recollect
    • 演讲稿
    • 祁阳人生活网
    • 我爱演讲稿网
  • 搜索

  • 标签

      函数 自定义方法 SEO 分页 分页函数 分页方法 nginx重新的一些规则
  • 分类

    • 文学(0)
    • 编程(0)
    • 运维(0)
    • 光影色彩(0)
    • 科技(0)
    • 生活(0)
    • 诗词鉴赏(3)
    • 美文共读(1)
    • 原创(10)
    • php(111)
    • asp(1)
    • .net(0)
    • VB(0)
    • C/C++(0)
    • 易语言(0)
    • js(8)
    • 其他(9)
    • 逆向(2)
    • windows(11)
    • linux(121)
    • 电影(0)
    • 音乐(1)
    • 互联网(4)
    • 手机(0)
    • 情感(2)
  • 最新文章热门文章随机文章

    • 兄弟二周年祭
    • openai给的ionCube 解密代码,应该是老版本可以这样
    • WordPress – 5秒盾防CC(PHP通用代码)
    • 我高中最好的朋友今天猝死了-伤心得不行
    • Linux系统中 systemd-journaldCPU占用异常的解决方法
    • SVN Skipped 'xxx' -- Node remains in conflict 错误的解决办法
    • 解决Linux读写nfs共享盘速度慢的问题
    • php 获取302跳转后的地址
    • 让vsftp显示隐藏文件的办法,比如显示 .htaccess
    • 添加自签名https证书到centos系统信任的问题
    • php采集百度某关键词搜索结果的网址
    • 使用Snoopy来获取某网页的所有链接
    • PHP获取页面的JS和CSS的总数和文件
    • php采集文章过滤版权信息
    • 提取google搜索数据,遭遇屏蔽的解决办法用php_Curl获取Cookie!
Copyright © 2001-2025 傅令江的光影色彩世界. Powered by www.fulingjiang.cn ICP备案:京ICP备14015190号-5