最近几天在做一个项目,主要是将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计算时间加一天的更多相关文章

  1. 自学php找工作【二】 PHP计算时间加一天

    最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的 ...

  2. python datetime库使用和时间加减计算

    datetime库使用 一.操作当前时间 1.获取当前时间 >>> import datetime >>> print datetime.datetime.now( ...

  3. Android4.0图库Gallery2代码分析(二) 数据管理和数据加载

    Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...

  4. time函数计算时间

    学过C语言的都知道有个time函数可以计算时间, 也好像知道time(NULL)返回的是一个距离1970年1月1日0时0分0秒的秒数. #include <stdio.h> #includ ...

  5. DB2时间函数 实现 时间加减

    时间加减:后边记得跟上时间类型如day.HOUR TIMESTAMP ( TIMESTAMP(DEF_TIME)+1 day)+18 HOUR   DB2时间函数是我们最常见的函数之一,下面就为您介绍 ...

  6. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

  7. python3笔记二十一:时间操作datetime和calendar

    一:学习内容 datetime calendar 二:datetime 1.模块说明:可以理解为datetime基于time进行了封装,提供了各种使用的函数,datetime模块的接口更直接,更容易调 ...

  8. 【Python】我是如何使计算时间提速25.6倍的

    我是如何使计算时间提速25.6倍的 我的原始文档:https://www.yuque.com/lart/blog/aemqfz 在显著性目标检测任务中有个重要的评价指标, E-measure, 需要使 ...

  9. JAVA获取当前时间加一天

    01.获取当前时间 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return df.for ...

随机推荐

  1. (6)文本挖掘(三)——文本特征TFIDF权重计算及文本向量空间VSM表示

    建立文本数据数学描写叙述的过程分为三个步骤:文本预处理.建立向量空间模型和优化文本向量. 文本预处理主要採用分词.停用词过滤等技术将原始的文本字符串转化为词条串或者特点的符号串.文本预处理之后,每个文 ...

  2. Atitit.auto complete 自己主动完毕控件的实现总结

    Atitit.auto complete  自己主动完毕控件的实现总结 1. 框架选型 1 2. 自己主动完毕控件的ioc设置 1 3. Liger  自己主动完毕控件问题 1 4. 官网上的code ...

  3. [Java Sprint] Spring XML Configuration : Setter Injection Demo

    In CustomerServiceImpl.java, we hardcoded 'HibernateCustomerRepositoryImpl' package com.pluralsight. ...

  4. PHP + Socket 发送http请求进而实现站点灌水

    本质上实现组装http信息的请求行,头信息.主题信息.參考it自学网 cookie信息和http请求头有非常大关系,注意把http请求头信息传递到函数里面 01-msg.php <?php re ...

  5. 有时候当你改动了xib &#160; 你调试,各种改的时候又没变化的时候

    当你xib 改变了   调试的时候又没变化的时候,当你各种改错无用的时候,就是xcode xib的缓存问题了.  please clear xcode . command + shift + K . ...

  6. ImportError: No module named &#39;ConfigParser&#39;

    Resolve Method: I found the problem. I had manually installed a newer version of python (version 3.2 ...

  7. web 开发之js---js 中的数组操作

    js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^var arr = new Array();arr[0] = "aaa";arr[1] ...

  8. js jquery验证上传文件的格式和大小

    // 验证附件格式和大小 function confirmData() { var flag = true; var message = ""; var errorSize = & ...

  9. ZOJ 3870 Team Formation 贪心二进制

                                                    B - Team Formation Description For an upcoming progr ...

  10. 关于Doctype、严格模式与混杂模式

    <!Doctype> 文档声明,位于文档中的最前面的位置,处于<html>标签之前.此标签告知浏览器文档使用哪种HTML或XHTML规范. 用于告知浏览器以何种模式来渲染文档. ...