有时候我们在开发项目的时候会遇到获取几天前、几天后、今日、本周等的开始时间和结束时间,获取前几个月份,获取本年度天数等等,以下是我总结的几种常见的时间相关的方法,希望对大家有用:

1.获取前几个月月份

public function toSelfMonth($m){
$today = input('param.today') ? input('param.today') : date("Y-m-d");
$arr = array();
$old_time = strtotime('-'.$m.' month',strtotime($today));
for($i = 0;$i <= $m; ++$i){
$t = strtotime("+$i month",$old_time);
$arr[]=date('Y-m',$t);
}
return $arr;
}

2.获取前几天日期

public function toSelfDay($m){
$today = input('param.today') ? input('param.today') : date("Y-m-d");
$arr = array();
$old_time = strtotime('-'.$m.' day',strtotime($today));
for($i = 0;$i <= $m; ++$i){
$t = strtotime("+$i day",$old_time);
$arr[]=date('Y-m-d',$t);
}
return $arr;
}

3.计算前几个月的天数

public function getLastMonthDays($month){
$arr = $this->toSelfMonth($month);
$y = date('Y',time());
$days = date('d',time());
for ($i=0;$i<count($arr)-1;$i++){
$days = $days + date('t', strtotime($arr[$i]."-01"));
}
return $days;
}
4.获取某一月的天数
public function getSelfMonthDays(){
/*$days = cal_days_in_month(CAL_GREGORIAN, 4, 2011);*/
$days = date('t', strtotime("2011-4-1"));
/*$days = date("t");
echo "当前月的天数 ".$days."<br/>";*/
return $days;
}

5.获取指定年月的开始和结束时间戳

public function getSelfMonthStartEnd($y=0,$m=0){
$y = $y ? $y : date('Y');
$m = $m ? $m : date('m');
$d = date('t', strtotime($y.'-'.$m));
return array("start"=>strtotime($y.'-'.$m),"end"=>mktime(23,59,59,$m,$d,$y));
}

6.获取日期间隔

获取时间间隔,首先要将时间转化为时间戳,时间戳一般是以秒为计量单位,所以得出以下计量单位:

(1)1小时为3600s

(2)1天为24*3600s,即86400秒

根据这两个条件,得到以下方法

function GetDateLong($time1,$time2){

if($time2 >= $time1){
$long = $time2 - $time1;
}else{
$long = -($time2 - $time1);
}
if($long > 0){
$year_day = $this->GetYearDay($time1);
$year = floor($long/($year_day*86400));
$day = floor(($long)%($year_day*86400)/86400);
if($year >= 1){
return $year.'年'.$day.'天';
}else{
return $day.'天';
}
}else{
return '0天';
}


}

7.获取是否是闰年

一年有365天的情况下是平年,1年有366天的情况下是闰年。

1、普通闰年:公历年份是4的倍数的,一般是闰年。(如2004年就是闰年);2、世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是世纪闰年,2000年是世纪闰年)。

按照这个条件我们可以获取到以下的方法获取是平年还是闰年

public function GetYearType($year){
if ($year%4==0&&($year%100!=0 || $year%400==0)){
return 1;
}else{
return 2;
}
}

8.判断一年有多少天

同以上7的介绍公历年份是4的倍数的,一般是闰年。公历年份是整百数的,必须是400的倍数才是闰年。

按照这个条件我们可以完成一下方法来获取一年的天数

public function GetYearDay($time){
$year = date("Y",$time);
$a1 = $year/100;
if($a1 == 0){
$b1 = $year/400;
if($b1 > 0){
$long = 365;
}else{
$long = 366;
}
}else{
$b2 = $year/4;
if($b2 == 0){
$long = 366;
}else{
$long = 365;
}
}
return $long;
}


更多相关文章

  1. Android(安卓)GPS 获取
  2. android 获取路径目录方法以及判断目录是否存在,创建目录
  3. Android学习笔记之TabHost
  4. Android(安卓)Studio获取SHA1值
  5. Android的第三个应用---短信发送器
  6. Android(安卓)程序获取、设置铃声、音量、静音、扬声器
  7. android accessibility
  8. 在SQLite数据库中获取新插入数据自增长的ID值(传智播客笔记)
  9. Android(安卓)JNI和NDK学习(09)--JNI实例二 传递类对象

随机推荐

  1. 创建 PSR-4 的 Php 包
  2. 看看PHP 多进程处理任务
  3. 一定要改掉 这5个PHP编程中的不良习惯!
  4. PHP安全问题汇总
  5. 详解PHP中被忽略的性能优化利器:生成器
  6. 教你使用PHP实现查找你想要的附近人
  7. 你可能要纠正这5个PHP编码小陋习!
  8. PHP处理时间和时区需注意以下三点!
  9. php+redis实现全页缓存系统
  10. 分享php秒杀功能实现的思路