自学php【二】 PHP计算时间加一天

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

在其中涉及到了对于时间的计算!当我写完这个程序的时候,我回头看我写的计算时间的代码。有些都有点儿懵了!。。。在这里记录下来方便以后回忆,也方便别人使用!

代码可能会臃肿!新人一枚!欢迎指正!拒绝骂街哦!

先简单说一下代码,其中主要涉及到计算润年 平年,计算28天 31天 30天月份 等,主要就是判断!代码中有注释,大家看一下,希望大家多多指正缺点!

  1  /**一年中的31天的月份
  2      * @var array
  3      */
  4     private $month_31 = array(1,3,5,7,8,10,12);
  5 
  6     /**一年中30天的月份
  7      * @var array
  8      */
  9     private $month_30 = array(4,6,9,11);
 10 
 11     /**查询开始的时间戳
 12      * @var
 13      */
 14     private $startTimeStamp;
 15 
 16     /**查询结束的时间戳
 17      * @var
 18      */
 19     private $endTimeStamp;
 20 
 21     /-----------------------------------------------计算年月----------------------------------------------------------
 22 
 23     /**计算年份是否是闰年,如果是闰年 2月份是29天  平年是28天, 每调用一次这个函数,天数增 加1天
 24      * @return string  时间戳,是经过计算的,前加 '00'  后加'000' 
 25      */
 26     private function computeTime() {
 27         if (($this->year % 4 == 0 && $this->year % 100 != 0) || ($this->year % 400 == 0)) {
 28             $this->computeTimeDate(29);
 29         } else {
 30             $this->computeTimeDate(28);
 31         }
 32     }
 33 
 34     /**根据月份是多少天,计算日期时间,
 35      * @param $Feb  2月的天数
 36      */
 37     private function computeTimeDate($Feb) {
 38 
 39         if ($this->month == 2) {
 40 
 41             if($this->date >= 1 && $this->date <= $Feb) {
 42 
 43                 $this->date = $this->date + $this->syncNumDate;
 44                 //如果加默认天数大于当前月份天数,就计算月份
 45                 if( $this->date + $this->syncNumDate > $Feb ) {
 46                     $this->computeDateMonth();
 47                 }
 48 
 49             } else if($this->date > $Feb) {
 50 
 51                 $D_value = $this->syncNumDate - ($Feb - $this->date);
 52                 if( $D_value != 0 ) {
 53                     $this->computeDateMonth($D_value);
 54                 } else {
 55                     $this->computeDateMonth();
 56                 }
 57 
 58             } else {
 59                 die('2月份天数不在正常范围内');
 60             }
 61 
 62         } else if( in_array($this->month, $this->month_30) ) {
 63 
 64             if( $this->date >= 1 && $this->date < 30 ) {
 65 
 66                 $this->date = $this->date + $this->syncNumDate;
 67                 if( $this->date + $this->syncNumDate > 30 ) {
 68                     $this->computeDateMonth();
 69                 }
 70 
 71             } else if($this->date >= 30){
 72 
 73                 $D_value = $this->syncNumDate - (30 - $this->date);
 74                 if( $D_value != 0 ) {
 75                     $this->computeDateMonth($D_value);
 76                 } else {
 77                     $this->computeDateMonth();
 78                 }
 79 
 80             } else {
 81                 die('30天的月份天数不在正常范围内');
 82             }
 83 
 84         } else if(in_array($this->month, $this->month_31)) {
 85 
 86             if( $this->date >= 1 && $this->date < 31 ) {
 87 
 88                 $this->date = $this->date + $this->syncNumDate;
 89                 if( $this->date + $this->syncNumDate > 31 ) {
 90                     $this->computeDateMonth();
 91                 }
 92 
 93             } else if( $this->date >= 31 ){
 94 
 95                 $D_value = $this->syncNumDate - (31 - $this->date);
 96                 if( $D_value != 0 ) {
 97                     $this->computeDateMonth($D_value);
 98                 } else {
 99                     $this->computeDateMonth();
100                 }
101 
102             } else {
103                 die('31天的月份天数不在正常范围内');
104             }
105 
106         } else {
107 //            echo $this->month;
108             die('函数computeTimeDate计算年月日发生错误');
109         }
110     }
111 
112     /**
113      * 计算加减月份,如果超过12 就让年份 +1 月份恢复到1
114      * @param $D_value   差值,由于在计算天数的时候,存在加值过大,造成的重复计算,例如30+6 可能计算两次,差值就是 30+1 剩下的5天,在新的月份添加
115      */
116     private function computeDateMonth($D_value='') {
117         if($this->month >= 1 && $this->month < 12) {
118             $this->month = $this->month + 1;
119 
120             if( $D_value != '' ) {
121                 $this->date = $D_value;
122             } else {
123                 $this->date = 1;
124             }
125         } else if($this->month == 12) {
126             if( $this->year == date('Y', time()) ) {
127                return;
128             } else {
129                 $this->year = $this->year + 1;
130                 $this->month = 1;
131 
132                 if( $D_value != '' ) {
133                     $this->date = $D_value;
134                 } else {
135                     $this->date = 1;
136                 }
137 //                $this->computeTime();
138             }
139         } else {
140             die('computeDateMonth函数计算错误');
141         }
142     }

写了以上的代码,也算了解了日期处理的一个过程!对于记忆这个函数更深刻了!~~

其实主要还是自己想写一遍! 至少自己对函数也有一个更好的理解!

以下是用PHP代码实现上面的一堆!

data( 'Y-m-d', strtotime( ' +1 days ' ) );

 

转载于:https://www.cnblogs.com/itafter/p/4202957.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为QT添加qss样式文件

代码 QFile file("my.qss"); file.open(QFile::ReadOnly); QString styleSh tr(file.readAll()); setStyleSheet(styleSh);my.qss文件内容 /* 正常时&#xff0c;按钮颜色 */ QPushButton{background-color:rgb(240,255,255);color: rgb(0, 0, 2);border-style: o…

人机融合智能的现状与展望

来源&#xff1a;人机与认知实验室作者&#xff1a;刘伟 苌凯旋摘要&#xff1a;本文对人机融合智能的概念、应用、发展将面临的关键问题以及未来发展的方向进行简要介绍。1 引言1.1 现有人工智能的不足与挑战人工智能&#xff08;AI&#xff09;的概念于1956年的达特蒙斯学院暑…

J2EE软件开发视频教程

BF-TECH-J2EE软件开发工程师就业班课程 课时数量&#xff1a;920课时 用到技术&#xff1a;J2EE 涉及项目&#xff1a;权限管理通用模块、易买网、CRM客户关系管理系统等 咨询qq&#xff1a;1840215592 J2EE软件工程师培训视频教程结合项目&#xff0c;进行实战图书馆信息管理系…

优先队列priority_queue的使用方式

C STL中的一种数据存储结构&#xff0c;数组的方式存储&#xff0c;插入数据时&#xff0c;设置排序规则&#xff0c;可以自动排序&#xff0c; priority_queue <int,vector<int>,less<int> > p; priority_queue <int,vector<int>,greater<int&…

Unity自带网络功能——NetworkView组件、Serialize、RPC

Unity拥有大量的第三方插件&#xff0c;专门提供了对网络功能的支持。可是&#xff0c;大部分开发人员第一次接触到的还是Unity自带的网络功能&#xff0c;也就是大家常常说到的Unity Networking API。这些API是借助于组件NetworkView发挥作用的&#xff0c;而它能够简化开发人…

Science:人工智能的发展离不开神经科学,先天结构或是下一个方向

来源&#xff1a;Science编译&#xff1a;机器之心摘要&#xff1a;人工智能从神经科学领域吸收了大量养分&#xff0c;并由此催生了深度学习和强化学习等智能处理方法。以色列魏茨曼科学研究学院计算机科学系教授 Shimon Ullman 相信神经科学还能为人工智能发展提供进一步的助…

Ubuntu20.04 及深度学习环境anaconda、cuda、cudnn、pytorch、paddle2.3安装记录

学习目标&#xff1a; Ubuntu20.04下装好torch、paddle深度学习环境。 选择的版本环境是 &#xff1a;最新的nvidia驱动、cuda 11.1 、cudnn v8.1.1&#xff0c;下面会说为啥这么选。 学习内容&#xff1a; 1. Ubuntu20.04仓库换源 本节参考Ubuntu 20.04 Linux更换源教程 2…

NSIS脚本语言安装与编译

NSIS是什么 当项目中需要把安装包发给客户时&#xff0c;不能直接发送release文件&#xff0c;需要把release文件压缩打包&#xff0c;这时就可以用到NSIS工具&#xff0c;NSIS工具可以进行包装&#xff0c;使用时需要下载&#xff1a; 编译环境&#xff1a;nullsoft scriptab…

今日思考

1. 带人&#xff0c;就是要带来改变 2. 程序员做到什么时候退休 3. 人一辈子能创造多少财富 转载于:https://www.cnblogs.com/x3d/p/4209759.html

AI 的寒冬将来临

来源&#xff1a;云头条深度学习处于所谓的AI革命的前沿至今已有好几年&#xff1b;许多人过去认为&#xff0c;深度学习是神奇的“银弹”&#xff0c;会把我们带到技术奇点&#xff08;general AI&#xff09;的奇妙世界。许多公司在2014年、2015年和2016年纷纷下豪赌&#xf…

Libcurl安装与HelloWorld

Windows系统下源代码下载编译、安装方式如下&#xff1a; https://blog.csdn.net/fxbjye/article/details/89152849 编译后得到库文件&#xff0c;把这两个文件复制到项目文件中&#xff0c; 修改项目文件的属性&#xff0c; 修改附加依赖项&#xff1a; 输入代码&#xff1…

sql分页

select * from ( select ROW_NUMBER() over(order by id Desc) as rowid,* from News) tb where tb.rowid between 1 and 5 )转载于:https://www.cnblogs.com/andyxl/p/4215937.html

信息论之父是如何将世界数字化的?

来源&#xff1a;CSDN编译&#xff1a;弯月机械鼠闯迷宫在 20 世纪 50 年代早期的一段视频中&#xff0c;贝尔实验室的科学家克劳德香农&#xff08;Claude Shannon&#xff09;展示了他的一项新发明&#xff1a;一只名为 Theseus 的机械鼠&#xff08;看起来需要上发条&#x…

[BC Round#26] Card 【各种水】

题目链接&#xff1a;HDOJ - 5159 这道题的做法太多了..BC的第二题也是可以非常水的.. 算法一 我在比赛的时候写的算法是这样的.. 预处理出所有的答案&#xff0c;然后对于每个询问直接输出。 询问 (a, b) 记作 (a, b) 。 (a, b) 的答案是由 (a, b-1) 的答案推出的。 (a, 1) …

Libcurl的介绍

一种请求网络的函数库&#xff0c;安装完后需要一些初始化&#xff0c;修改属性等操作&#xff1b; 程序中一般分为&#xff1a; 1&#xff0c;全局初始化&#xff1b; 2&#xff0c;创建当次请求句柄&#xff1b; 3&#xff0c;设置属性&#xff1b; 4&#xff0c;执行&#x…

奇点、技术失控与技术启示录

来源&#xff1a;资本实验室回顾过去&#xff0c;我们可以看到历史上各个时期涌现出的众多超越时代的新公司、新产品、新思维和新模式。尽管绝大多数创新产品最终都失败了&#xff0c;但先行者们致力于要解决所在时代各种问题和困难的精神&#xff0c;却影响着下一代的技术进步…

Linux常用命令 -- screen

Linux常用命令 -- screen 打开一个screen $screen 这时在机器上就会存在一个screen&#xff0c;这个screen会被以默认的方式命名&#xff1a; $screen -lsThere is a screen on:4087.pts-5.jackson-virtual-machine (01/11/2015 05:33:22 PM) (Detached) 1 Socket in /var/…

Gartner预测2019年十大「数据和分析技术」趋势:增强型分析成为重要卖点

来源&#xff1a;机器之能摘要&#xff1a;处于数据和分析位置的领导人必须审视这些趋势对业务带来的潜在影响&#xff0c;并相应调整业务模式和运营&#xff0c;否则就有可能失去竞争优势。增强型数据分析&#xff0c;增强型数据管理&#xff0c;持续型智能&#xff0c;可解释…

NSIS脚本解释

NSIS脚本语言编程&#xff0c;与hello world项目 https://blog.csdn.net/dbzhang800/article/details/6411870 NSIS是一种为程序打包的脚本语言&#xff0c;有一定的语法规则&#xff1b; 参考&#xff1a;https://blog.csdn.net/xingzheouc/article/details/46502245 对NSIS…

iOS开发-多线程编程技术(Thread、Cocoa operations、GCD)

简介 在软件开发中&#xff0c;多线程编程技术被广泛应用&#xff0c;相信多线程任务对我们来说已经不再陌生了。有了多线程技术&#xff0c;我们可以同做多个事情&#xff0c;而不是一个一个任务地进行。比如&#xff1a;前端和后台作交互、大任务&#xff08;需要耗费一定的时…