计算指定日期的前几天,几个月或者几年的函数

$a = '2014/08/21';
echo date( "Y-m-d", strtotime( "-6 month  ".$a."" ) );

获得当前月的制定日期,比如说20号的

echo date('Y-m-20 H:i:s',time());

获得系统时间前一个月的第一天

echo 'next_1='.date( "Y-m-1", strtotime( "-1 month".date("Y-m-d",time())."" ) ).'<br>';

获得系统时间前一个月的最后一天
 echo 'next_20='.date( "Y-m-t", strtotime( "-1 month".date("Y-m-d",time())."" ) );

注意:曾经遇到过这样的问题,

$sagyoYmd = '2014-11-29';

 $sy_sagyo_ymd_max = date( "Y-m-1", strtotime(".$sagyoYmd.") );
$sy_sagyo_ymd_max = date( "Y-m-1", strtotime( "-0 month".$sagyoYmd."" ) ); $sy_sagyo_ymd_max = date( "Y-m-1", strtotime($sagyoYmd) );

输出当天某个时间点的时间戳:

strtotime("01:00:00")<=time()&& time()<=strtotime("02:00:00")

一个时间跨度的算法,计算一个时间,加上一个int类型的区间,如果是节日,周末就跳过,否者就累加:

function GetSyori_Yotei($koCd){
$time_count = "";
$i = 0;
$con=dbcon();
while(true){
$furikomi_syori = "";
                      //得出系统时间的第二天的星期数
$syori_w = date("w", strtotime("+1 day")+ 86400*$i);
                      //得出系统时间的第二天的年-月-日
$syori_check = date("Y-m-d", strtotime("+1 day")+ 86400*$i);
                      //对上面得出的这个时间进行验证,是否属于一个节假日
       $holiday_name_syori = holidayCheck($syori_check);
if($syori_w!="6" && $syori_w!="0" && empty($holiday_name_syori)){
$furikomi_syori = date("Y-m-d", strtotime("+1 day") + 86400*$i);
////振込予定日 -----------------start
//SPS申請振込間営業日数
$sps_days = GetSps_days($koCd);
$j = 1;
$k = 0;
$con=dbcon();
if($sps_days <= "0" || $sps_days ==null){
//振込予定日 = 振込処理日
$furikomi_yotei = $furikomi_syori;
}
while($k < $sps_days){
$yotei_w = date("w", strtotime("+1 day") + 86400*$i + 86400*$j);
$yotei_check = date("Y-m-d", strtotime("+1 day")+ 86400*$i + 86400*$j);
$holiday_name_yotei = holidayCheck($yotei_check);
if($yotei_w!="6" && $yotei_w!="0" && empty($holiday_name_yotei)){
$furikomi_yotei = date("Y-m-d", strtotime("+1 day") + 86400*$i + 86400*$j);
}else{
$j++;
continue;
}
$k++;
$j++;
}
////振込予定日 -----------------end
break;
}
$i++;
}
$time_count = $furikomi_syori.':'. $furikomi_yotei;
return $time_count;
}
 	/** yyyy-mm-dd =>dd;
* 1 - 31
* **/
function Day($time){
$Day = "";
if(!empty($time)){
$Day = date("j",strtotime($time));
}
return $Day;
}
/** yyyy-mm-dd =>dd;
* 2001
* **/
function Year($time){
$Year = "";
if(!empty($time)){
$Year = date("Y",strtotime($time));
}
return $Year;
}
/** yyyy-mm-dd =>mm;
* 01-12
* **/
function Month($time){
$Month = "";
if(!empty($time)){
$Month = date("m",strtotime($time));
}
return $Month;
}

输出的结果,在某些环境下竟然是不一样的情况,就是因为多加了个双引号和‘..’导致的,因此,这里需要注意

自己写的一个关于时间计算的函数,一个给定的时间,加一个月,加一年,减一个小时等。

	/**yyyy-mm-dd =>yyyy-mm+1-dd;
* 1995-1-31 => 1995-2-28
* **/
function DateAdd($interval,$number,$time){
$dateadd = ""; if(!empty($time)){
$param = $number ;
if($interval == "h"){
$param .= " hour" ;
}elseif($interval == "m"){
$param .= " month" ;
}elseif($interval == "d"){
$param .= " day" ;
}elseif($interval == "y"){
$param .= " year" ;
}elseif($interval == "w"){
$param .= " week" ;
}elseif($interval == "mi"){
$param .= " minute" ;
}
$dateadd = date( "Y-m-d", strtotime($param.$time) );
} return $dateadd; }

调用方法:

DateAdd('m','+1','2016-07-28');

刚好得出时间 :2016-08-28

这里有点东西需要注意,这里的计算是按+30天去算的,如果你的时间是2016-07-31的话,找下一个月就是2016-07-01。

PHP 时间函数集合的更多相关文章

  1. Mysql函数集合

    Mysql提供了很多函数 提供的常用函数集合 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整 ...

  2. 20101102--SQL字符串函数 ,日期和时间函数

    --------------------字符串函数------------------------- --ASCII 返回字符串的首字母的ASCII编码 select ASCII('w') selec ...

  3. 性能学习笔记之四--事务,思考时间,检查点,集合点和手写lr接口

    一.事物,思考时间,检查点,集合点 1.事务 lr里面的事物是lr运行脚本的基础.lr里面 要测试的三个维度都以事物为单位,所以一定要有事物.事务的概念贯穿loadrunner的使用,比如我们说的响应 ...

  4. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

  5. 借助JavaScript中的时间函数改变Html中Table边框的颜色

    借助JavaScript中的时间函数改变Html中Table边框的颜色 <html> <head> <meta http-equiv="Content-Type ...

  6. Loadrunner时间函数、用时间生成订单编号例子

    Loadrunner中取时间函数.用时间函数生成订单编号例子: <如要转载,请注明网络来源及作者:Cheers_Lee> 问题的提出: (1)有时候在Loadrunner中用C语言设计脚本 ...

  7. Sql Server函数全解(四)日期和时间函数

      日期和时间函数主要用来处理日期和时间值,本篇主要介绍各种日期和时间函数的功能和用法,一般的日期函数除了使用date类型的参数外,也可以使用datetime类型的参数,但会忽略这些值的时间部分.相同 ...

  8. Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数

    dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...

  9. mysql与oracle的日期/时间函数小结

    前言 本文的日期/时间全部格式化为”2016-01-01 01:01:01“形式: MONITOR_TIME为数据库表字段: 字符串与日期/时间相互转换函数 Oracle 日期/时间转字符串函数:to ...

随机推荐

  1. 开始hadoop

    hadoop介绍 分布式存储系统HDFS(Hadoop Distributed File System),提供了高可靠性.高扩展性和高吞吐率的数据存储服务: 资源管理系统YARN(Yet Anothe ...

  2. Unreachable catch block for IOException. This exception is never thrown from the try statement body

    Unreachable catch block for IOException. This exception is never thrown from the try statement body ...

  3. 基于开源软件在Azure平台建立大规模系统的最佳实践

    作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...

  4. Linux创建新用户以及useradd adduser的区别

    从阿里云那弄了个机子玩玩,系统用的是Ubuntu12.04.刚等上去时候是用root登录的,首先想到的就是创建一个用户. 使用 useradd myname 发现/home目录下没有myname的家目 ...

  5. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验

    原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...

  6. log4j的使用方法

    1.Log4j是什么? Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析 2.Log4j的概念 Log4j中有三个主要的组件,它们分别是 Logger.Appender和Layout ...

  7. asp.net用户检测的两种方式

    第一种方式(继承System.Web.UI.Page类,重写OnInit方法):    public class CheckSession : System.Web.UI.Page     {     ...

  8. QEMU MIPIS远程共享ubuntu主机的文件

    尝试啦很多中办法,最终选择以在QEMU模拟器中ssh 远程登入的方式访问主机,并用sshfs 挂载 主机端的文件到模拟器中,实现模拟器访问主机端的代码. SSH分客户端openssh-client和o ...

  9. 知道创宇爬虫题--代码持续更新中 - littlethunder的专栏 - 博客频道 - CSDN.NET

    知道创宇爬虫题--代码持续更新中 - littlethunder的专栏 - 博客频道 - CSDN.NET undefined 公司介绍 - 数人科技 undefined

  10. POJ 3125 Printer Queue

    题目: Description The only printer in the computer science students' union is experiencing an extremel ...