最近几天在做一个项目,主要是将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. Java自学如何找工作

    今天聊一下可能大多数人都关注的问题“自学Java如何找工作”那么首先你就要明确现在招聘Java开发的基本要求是什么?下面我们来看一下招聘网站上面的要求,在这里我只随便找了一个比较全面的要求,自己可以去 ...

  3. java自学找工作经历

    断断续续的,折腾了7个多月,学完了在网上购买的培训机构J2EE的全套课程.期间各种蛋疼看另一篇博客 http://www.cnblogs.com/work396/p/6791488.html 直接说找 ...

  4. 关于找工作(二 Cover Letter)

    准备好了简历,下一个文档就是cover letter了.其实对衡量你是否是一个好的候选人来说,cover letter的作用几乎是零(很多情况下主管技术工作的人或者雇人经理根本见不到cover let ...

  5. 我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序

    工作.工作.找工作.经过1个多星期的思想斗争还是决定了找JAVA方面的工作,因为好像能比PHP的工资高点.呵呵 :-)  (其实我这是笑脸,什么QQ输入法,模拟表情都没有,忒不人性化了.) 言归正传, ...

  6. IT行业歧视40岁以上人群为找工作还要谎报年龄[转]

    IT行业歧视40岁以上人群为找工作还要谎报年龄(这样不好) http://www.aliyun.com/zixun/content/2_6_616161.html [赛迪网讯]4月5日消息,许多40多 ...

  7. [找工作] 2019秋招|从春招到秋招,Java岗经验总结(收获AT)

    转自(有更多) https://blog.csdn.net/zj15527620802/article/month/2018/10 前言 找工作是一件辛酸而又难忘的历程.经历过焦虑.等待.希望,我们最 ...

  8. 找工作笔试面试那些事儿(13)---操作系统常考知识点总结 ZZ 【操作系统】

    http://blog.csdn.net/han_xiaoyang/article/details/11285485 上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样, ...

  9. 如何正确学习web前端流程以及如何找工作

    解释一下web前端工作是做啥的,Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript/Flash等各种Web技术进行客户端产品的开发.完成客户端程序(也就是浏览器端)的开发 ...

随机推荐

  1. ubuntu12.04_64bit adb shell

    1.#adb shell 提示error: insufficient permissions for device 解决办法: 1)sudo gedit /etc/udev/rules.d/51-an ...

  2. EasyUI-Tab 标签添加右键菜单

    在网上看了很多demo 自己实现了一个效果如下 <!doctype html> <html> <head> <meta http-equiv="co ...

  3. Codeforces Round #309 (Div. 1) C. Love Triangles dfs

    C. Love Triangles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/553/pro ...

  4. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  5. lucene合并测试的总结

    1 查询的总时间等于每个segment查询时间的总和 2 合并的步骤     (1)做flush操作的先生成一个新的segment     (2)检查在新segment之前已经存在的segment的数 ...

  6. linux 文件系统的管理 (硬盘) 工作原理

    一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16 ...

  7. 基于jQuery实现苹果Dock样式的菜单

    爱编程小编之前我们分享过相当数量的jQuery菜单了,今天要给大家带来一款Dock样式的jQuery菜单,用过苹果的朋友都知道,它的Dock菜单非常酷,配合漂亮的图标就更加绚丽了.效果图如下: 在线预 ...

  8. linux用户权限

    Linux下passwd和shadow文件内容详解 一./etc/passwd/etc/passwd 文件是一个纯文本文件,每行采用了相同的格式: name:password:uid:gid:comm ...

  9. LeetCode44 Wildcard Matching

    题目: Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single charact ...

  10. 小白日记50:kali渗透测试之Web渗透-CSRF

    CSRF CSRF原理:经常与XSS混淆. 从信任的角度进行区分:XSS:利用用户对站点的信任:CSRF:利用站点对已经身份认证的信任(有一定的信任)[默认情况:站点不信任客户端] 结合社工在身份认证 ...