php指定时间 n天,PHP实现指定时间的n月之前的这一天的两种算法
/**
*根据$endtime,返回指定$monthes月之前的日
*/
function severalMonthAgo($endtime,$monthes){
if (!$endtime) {
return false;
}
if (!is_int($monthes) || $monthes <=0) {
return false;
}
$m = date("m",$endtime);
$y = date("Y",$endtime);
$d = date("d",$endtime);
$year = floor($monthes/12);
$monthes_mod = $monthes%12;
if($year == 0){
//<12个月
if($m < $monthes){
//当前月份小于n月前
$res_y = $y-1;
$res_m = 12-($monthes-$m);
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
}elseif($m == $monthes){
$res_y = $y-1;
$res_m = 12;
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
}elseif($m>$monthes){
$res_y = $y;
$res_m = $m-$monthes;
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
}
}elseif($year>0){
$y = $y-$year;
$monthes = $monthes_mod;
if($m < $monthes){
//当前月份小于n月前
$res_y = $y-1;
$res_m = 12-($monthes-$m);
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
}elseif($m == $monthes){
$res_y = $y-1;
$res_m = 12;
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
}elseif($m>$monthes){
$res_y = $y;
$res_m = $m-$monthes;
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
}
}
return strtotime($res_y."-".$res_m."-".$res_d);
}
/**
*根据$endtime,返回指定$monthes月之前的日
*/
function severalMonthAgoEx($endtime,$monthes){
if (!$endtime) {
return false;
}
if (!is_int($monthes) || $monthes <=0) {
return false;
}
$m = date("m",$endtime);
$y = date("Y",$endtime);
$d = date("d",$endtime);
$year = floor($monthes/12);
$monthes_mod = $monthes%12;
$y -= $year;
//$year =0或>0;
//$monthes_mod =0或>0或
if ($year>0) {
if ($monthes_mod>0) {
$m_diff = 12+$m-$monthes_mod;
$m_diff_div = floor($m_diff/12);
$m_diff_mod = $m_diff%12;
if ($m_diff_div > 0) {
$res_y = $y;
$res_m = $m_diff_mod;
}elseif ($m_diff_div == 0) {
$res_y = $y -1;
$res_m = $m_diff_mod;
}
}elseif ($monthes_mod==0) {
//整除
$res_y = $y;
$res_m = $m;
}
}elseif ($year == 0) {
$m_diff = 12+$m-$monthes_mod;
$m_diff_div = floor($m_diff/12);
$m_diff_mod = $m_diff%12;
if ($m_diff_div > 0) {
$res_y = $y;
}elseif ($m_diff_div == 0) {
$res_y = $y -1;
}
$res_m = $m_diff_mod;
}
$t = date("t",strtotime($res_y."-".$res_m."-01"));
if($d
$res_d = $d;
}else{
$res_d = $t;
}
return strtotime($res_y."-".$res_m."-".$res_d);
}
php指定时间 n天,PHP实现指定时间的n月之前的这一天的两种算法相关推荐
- Python中按值来获取指定键的两种方法
Python字典中的键是唯一的,但不同的键可以对应同样的值,比如说uid,可以是1001.id同样可以是1001.这样的话通过值来获取指定的键,就不止一个!而且也并不太好处理.这里同样提供两种思路来处 ...
- mysql 当前时间减指定时间_MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔(推荐)...
DATE_ADD() 函数向日期添加指定的时间间隔. 当前表所有数据都往后增加一天时间: UPDATE ACT_BlockNum SET CreateTime = DATE_ADD(CreateTim ...
- convert.todatetime指定日期格式_JDK1.8新增日期时间类型
如果我们可以跟别人说:"我们在1502643933071见面,别晚了!"那么就再简单不过了.但是我们希望时间与昼夜和四季有关,于是事情就变复杂了.Java1.0中包含了一个Date ...
- oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。...
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...
- Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)
Cooike简介 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的 ...
- 获取某一年指定自然周的开始时间和结束时间
获取某一年指定自然周的开始时间和结束时间 package com.playmath.playmathcrm.util; import java.text.ParseException; import ...
- Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)
Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲) 准备 1.储存在raw文件夹 2. ...
- 《指定一个用户只能在特定的时间里不能登陆》『罗斌原创』
<指定一个用户只能在特定的时间里不能登陆> 使用有管理员权限的用户登陆(administrator),进入命令模式下以GUEST这个用户为列 如果需要设置这个GUEST帐户从周一到周五的早 ...
- 指定月份获取每周开始和截止时间,不足一周下个月的补足一周,以周六为标准
package com.deta.demo; import java.text.SimpleDateFormat; import java.util.Calendar; import java.uti ...
- 获取指定日期的第二天的凌晨时间 和获取指定时间+获取指定的天数的日期
获取指定日期的第二天的凌晨时间代码如下: package cn.migu;import java.text.ParseException; import java.text.SimpleDateFor ...
最新文章
- Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(Python)
- ITK:区域最小图像过滤器
- EntityFramework(EF)贪婪加载和延迟加载的选择和使用
- ERP CRM与SCM整合过程中的知识转移
- 如何在单个测试中同时执行多个断言
- skype linux 安装,Ubuntu 12.04 AMD64 安装 Skype
- 15 并发编程-(IO模型)
- 干货 | 懂点儿经济学有什么用?
- 阿里巴巴云原生大数据运维平台 SREWorks 正式开源
- 许家印砸1000亿布局AI、量子计算等领域,但在科技圈只能算轻壕
- slack 团队协作平台
- HDU_1198 Farm Irrigation(并查集)
- linux wine-qq介绍2009版QQ精简
- 如何使div 上下左右居中 css
- 【Leetcode 刷题题解】python语言+最优美解答+由易到难
- 3 非齐次线性微分方程与无量纲化
- SECTION 24 面向对象编程(三)
- Google全系列产品不再信任赛门铁克某款根证书-转载
- python中采用字典建立统_Python字典的基本使用
- 自由职业的 6 条建议