自学php【二】 PHP计算时间加一天
最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的
在其中涉及到了对于时间的计算!当我写完这个程序的时候,我回头看我写的计算时间的代码。有些都有点儿懵了!。。。在这里记录下来方便以后回忆,也方便别人使用!
代码可能会臃肿!新人一枚!欢迎指正!拒绝骂街哦!
先简单说一下代码,其中主要涉及到计算润年 平年,计算28天 31天 30天月份 等,主要就是判断!代码中有注释,大家看一下,希望大家多多指正缺点!
/**一年中的31天的月份
* @var array
*/
private $month_31 = array(1,3,5,7,8,10,12); /**一年中30天的月份
* @var array
*/
private $month_30 = array(4,6,9,11); /**查询开始的时间戳
* @var
*/
private $startTimeStamp; /**查询结束的时间戳
* @var
*/
private $endTimeStamp; /-----------------------------------------------计算年月---------------------------------------------------------- /**计算年份是否是闰年,如果是闰年 2月份是29天 平年是28天, 每调用一次这个函数,天数增 加1天
* @return string 时间戳,是经过计算的,前加 '00' 后加'000'
*/
private function computeTime() {
if (($this->year % 4 == 0 && $this->year % 100 != 0) || ($this->year % 400 == 0)) {
$this->computeTimeDate(29);
} else {
$this->computeTimeDate(28);
}
} /**根据月份是多少天,计算日期时间,
* @param $Feb 2月的天数
*/
private function computeTimeDate($Feb) { if ($this->month == 2) { if($this->date >= 1 && $this->date <= $Feb) { $this->date = $this->date + $this->syncNumDate;
//如果加默认天数大于当前月份天数,就计算月份
if( $this->date + $this->syncNumDate > $Feb ) {
$this->computeDateMonth();
} } else if($this->date > $Feb) { $D_value = $this->syncNumDate - ($Feb - $this->date);
if( $D_value != 0 ) {
$this->computeDateMonth($D_value);
} else {
$this->computeDateMonth();
} } else {
die('2月份天数不在正常范围内');
} } else if( in_array($this->month, $this->month_30) ) { if( $this->date >= 1 && $this->date < 30 ) { $this->date = $this->date + $this->syncNumDate;
if( $this->date + $this->syncNumDate > 30 ) {
$this->computeDateMonth();
} } else if($this->date >= 30){ $D_value = $this->syncNumDate - (30 - $this->date);
if( $D_value != 0 ) {
$this->computeDateMonth($D_value);
} else {
$this->computeDateMonth();
} } else {
die('30天的月份天数不在正常范围内');
} } else if(in_array($this->month, $this->month_31)) { if( $this->date >= 1 && $this->date < 31 ) { $this->date = $this->date + $this->syncNumDate;
if( $this->date + $this->syncNumDate > 31 ) {
$this->computeDateMonth();
} } else if( $this->date >= 31 ){ $D_value = $this->syncNumDate - (31 - $this->date);
if( $D_value != 0 ) {
$this->computeDateMonth($D_value);
} else {
$this->computeDateMonth();
} } else {
die('31天的月份天数不在正常范围内');
} } else {
// echo $this->month;
die('函数computeTimeDate计算年月日发生错误');
}
} /**
* 计算加减月份,如果超过12 就让年份 +1 月份恢复到1
* @param $D_value 差值,由于在计算天数的时候,存在加值过大,造成的重复计算,例如30+6 可能计算两次,差值就是 30+1 剩下的5天,在新的月份添加
*/
private function computeDateMonth($D_value='') {
if($this->month >= 1 && $this->month < 12) {
$this->month = $this->month + 1; if( $D_value != '' ) {
$this->date = $D_value;
} else {
$this->date = 1;
}
} else if($this->month == 12) {
if( $this->year == date('Y', time()) ) {
return;
} else {
$this->year = $this->year + 1;
$this->month = 1; if( $D_value != '' ) {
$this->date = $D_value;
} else {
$this->date = 1;
}
// $this->computeTime();
}
} else {
die('computeDateMonth函数计算错误');
}
}
写了以上的代码,也算了解了日期处理的一个过程!对于记忆这个函数更深刻了!~~
其实主要还是自己想写一遍! 至少自己对函数也有一个更好的理解!
以下是用PHP代码实现上面的一堆!
data( 'Y-m-d', strtotime( ' +1 days ' ) );
自学php【二】 PHP计算时间加一天的更多相关文章
- 自学php找工作【二】 PHP计算时间加一天
最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的 ...
- python datetime库使用和时间加减计算
datetime库使用 一.操作当前时间 1.获取当前时间 >>> import datetime >>> print datetime.datetime.now( ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- time函数计算时间
学过C语言的都知道有个time函数可以计算时间, 也好像知道time(NULL)返回的是一个距离1970年1月1日0时0分0秒的秒数. #include <stdio.h> #includ ...
- DB2时间函数 实现 时间加减
时间加减:后边记得跟上时间类型如day.HOUR TIMESTAMP ( TIMESTAMP(DEF_TIME)+1 day)+18 HOUR DB2时间函数是我们最常见的函数之一,下面就为您介绍 ...
- [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义
C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...
- python3笔记二十一:时间操作datetime和calendar
一:学习内容 datetime calendar 二:datetime 1.模块说明:可以理解为datetime基于time进行了封装,提供了各种使用的函数,datetime模块的接口更直接,更容易调 ...
- 【Python】我是如何使计算时间提速25.6倍的
我是如何使计算时间提速25.6倍的 我的原始文档:https://www.yuque.com/lart/blog/aemqfz 在显著性目标检测任务中有个重要的评价指标, E-measure, 需要使 ...
- JAVA获取当前时间加一天
01.获取当前时间 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return df.for ...
随机推荐
- Java这样学,Offer随便拿,学习方法和面试经验分享
Java这样学,Offer随便拿,学习方法和面试经验分享 学习中:https://mp.weixin.qq.com/s/iSutLzqCiPMWwm_Rm_2oPw
- 重构——Martin Fowler 阅读笔记
重构的第一步: 为即将修改的代码建立一组可靠的测试环境. 和任何重构手法一样,当提炼一个函数时,我们必须知道可能出什么错. 安全步骤: 首先在一个函数内找到局部变量和参数.任何不会被修改的变量都可以被 ...
- 单点登录之CAS简介
cas官网http://www.ja-sig.org/products/cas/. ok,如今開始本文的重点内容解说,先来了解一下cas 实现single sign out的原理,如图所看到的: ...
- 【codevs1306】广播操的游戏
求字符串内的非空子串的数量 后缀数组!!! #include<algorithm> #include<cstdlib> #include<cstring> #inc ...
- Linux/Android——Input系统之frameworks层InputManagerService (六)【转】
本文转载自:http://blog.csdn.net/u013491946/article/details/72638954 版权声明:免责声明: 本人在此发文(包括但不限于汉字.拼音.拉丁字母)均为 ...
- xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is
method: select Xcode version in Command Line Tools in Location(Click Xcode and then Preferences) Bef ...
- win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程( Win7 SQL Server2005 安装教程)
win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程 由于工作需要,今天要在电脑上安装SQL Server 2005.以往的项目都是使用Oracle,MS的 ...
- android删除短信
代码如下: //删除短信 getContentResolver().delete(Uri.parse("content://sms/#"),"address=?" ...
- golang中管道热替换
golang中管道替换问题 https://blog.csdn.net/cyk2396/article/details/78875347 1.运行以下代码: var chan1 chan int va ...
- [NOI2004]小H的小屋 贪心
神仙贪心,洛谷没有插图导致我题一开始都没看懂.容易发现,块越多越优秀,然后为了满足题意,所以假如不能整除,就分为两个部分(能整除就直接均分就行了).前一部分是n/m,后一部分是n/m+1.数量也是固定 ...