欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

​php 当前日期加一天和指定日期加一天 增加一天 添加一天 一月一星期一周一年 解决strtotime增加减少一个月日期不准的问题 有大用 有大大用

php 当前日期加一天和指定日期加一天

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37506868/article/details/77722627

1.给当前时间加一天?一小时?

<?php
echo "今天:",date('Y-m-d H:i:s'),"<br>";
echo "明天:",date('Y-m-d H:i:s',strtotime('+1 day'));
?>

上一行输出当前时间,下一行输出明天时间
同理加一年,一小时,一分钟 ,一月。。。

echo "明天:",date('Y-m-d H:i:s',strtotime('+1 day'));

echo "明天:",date('Y-m-d H:i:s',strtotime('+1 hour'));

echo "明天:",date('Y-m-d H:i:s',strtotime('+1 minute'));

echo "明天:",date('Y-m-d H:i:s',strtotime('+1 mouth'));

这里+1 day可以修改参数1为任何想需要的数  day也可以改成year(年),month(月),hour(小时)minute(分),second(秒)如:
date('Y-m-d H:i:s',strtotime("+1 day +1 hour +1 minute");
可以随便自由组合,以达到任意输出时间的目的
注:该方法之针对1970年以后试用,也就是时间戳的适用范围。

2.给指定时间加一天?一小时?.。。。。。

echo   date("Y-m-d",strtotime("+1 month",strtotime("2012-02-04")));

结果为:2011-03-04

echo   date("Y-m-d",strtotime("+1 week",strtotime("2011-02-04")));

结果为:2011-02-11

echo   date("Y-m-d",strtotime("+1 day",strtotime("2011-02-04")));

结果为:2011-02-05

其它同理如上。

注:该方法之针对1970年以后试用,也就是时间戳的适用范围。



来自 https://blog.csdn.net/qq_37506868/article/details/77722627



PHP中如何给日期加上一个月 加一周 加一天

echo   date("Y-m-d",strtotime("+1 month",strtotime("2012-02-04")));

结果为:2011-03-04

echo   date("Y-m-d",strtotime("+1 week",strtotime("2011-02-04")));

结果为:2011-02-11

echo   date("Y-m-d",strtotime("+1 day",strtotime("2011-02-04")));

结果为:2011-02-05

使用函数 date() 实现 
<?php echo $showtime=date("Y-m-d H:i:s");?> 
显示的格式: 年-月-日 时:分:秒

相关时间参数: 
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"


来自  https://blog.csdn.net/l172942736/article/details/40982951


解决strtotime增加减少一个月日期不准的问题

转载者:http://www.laruence.com/2018/07/31/3207.htm

经常会有人被strtotime结合-1 month, +1 month, next month的时候搞得很困惑, 然后就会觉得这个函数有点不那么靠谱, 动不动就出问题. 用的时候就会很慌…

这不, 刚刚就有人在微博上又问我:

鸟哥,今天是2018-07-31 执行代码:

  1. date("Y-m-d",strtotime("-1 month"))

怎么输出是2018-07-01?

好的吧, 虽然这个问题看起来很迷惑, 但从内部逻辑上来说呢, 其实是”对”的, 你先别着急哈, 让我慢慢讲:

我们来模拟下date内部的对于这种事情的处理逻辑:

  • 1. 先做-1 month, 那么当前是07-31, 减去一以后就是06-31.

  • 2. 再做日期规范化, 因为6月没有31号, 所以就好像2点60等于3点一样, 6月31就等于了7月1

是不是逻辑很”清晰”呢? 我们也可以手动验证第二个步骤, 比如:

  1. var_dump(date("Y-m-d", strtotime("2017-06-31")));

  2. //输出2017-07-01

也就是说, 只要涉及到大小月的最后一天, 都可能会有这个迷惑, 我们也可以很轻松的验证类似的其他月份, 印证这个结论:

  1. var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));

  2. //输出2017-03-03

  3. var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));

  4. //输出2017-10-01

  5. var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));

  6. //输出2017-03-03

  7. var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));

  8. //输出2017-03-03

那怎么办呢?

从PHP5.3开始呢, date新增了一系列修正短语, 来明确这个问题, 那就是”first day of” 和 “last day of”, 也就是你可以限定好不要让date自动”规范化”:

  1. var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));

  2. //输出2017-02-28

  3. var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));

  4. ////输出2017-09-01

  5. var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31"))));

  6. ////输出2017-02-01

  7. var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31"))));

  8. ////输出2017-02-28

那如果是5.3之前的版本(还有人用么?), 你可以使用mktime之类的, 把所有的日子忽略掉, 比如都限定为每月1号就可以了, 只不过就不如直接用first day来的更加优雅.

来自 https://blog.csdn.net/chin1231/article/details/82392171



普通分类: