zoukankan      html  css  js  c++  java
  • PHP获取上个月最后一天的一个容易忽略的问题

    正常来说,PHP是有一个很方便的函数可以获取上个月时间的

    strtotime

    (PHP 4, PHP 5, PHP 7)
    strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳

    说明 ¶

    int strtotime ( string $time [, int $now = time() ] )

    今天是2016-10-31日,所以strtotime('-1 month'),应该是9月30日

    echo date('Y-m-d',strtotime('-1 month'));
    

    可是实际上,输出的是2016-10-01,不但月份没对,日也没对上。
    猜测是9月没有31号,所以直接跑到10月1号了。

    所以要尝试另一种写法

    echo date('Y-m-d',strtotime('-1 month -1 day'));
    

    输出:2016-09-30

    这种写法是不是一定没问题的呢?
    我想到还要一个特殊的月份,今年的2月29号,所以要尝试一下在2月的时候会不会出问题。
    首先查表得2月29号的时间戳是1456675200

    echo date('Y-m-d',1456675200); //2016-02-29
    echo PHP_EOL;
    echo date('Y-m-d',strtotime('-1 month',1456675200)); //2016-01-29
    echo PHP_EOL;
    echo date('Y-m-d',strtotime('-1 month -1 day',1456675200)); //2016-01-28
    

    结果是两个都不对了..

    所以终级写法是,先获取本月的第一天,再-1天

    $time =  strtotime(date('Y-m-01',1456675200));
    echo date('Y-m-d',strtotime('-1 day',$time));  //2016-01-31
    
  • 相关阅读:
    redis缓存数据
    VMware克隆服务器
    Java去掉Html标签的方法
    设计模式学习笔记:一、代理模式(动态代理实现)
    设计模式学习笔记:一、代理模式(动态代理步骤+举例)
    Python教程资源
    Lucene入门
    Oracle入门
    Sql入门
    将web工程署到Linux简单实现
  • 原文地址:https://www.cnblogs.com/jaychan/p/6014965.html
Copyright © 2011-2022 走看看