/**
* 根据指定日期返回经过的年月
* @param string $sDay 开始日期
* @param string $eDay 结束日期
* @returnse multitype:string 返回一维数组
*/
public static function getPassMonth(string $sDay , string $eDay ){
    $date1_stamp=strtotime($sDay);
    $date2_stamp=strtotime($eDay );
    $pass = $date2_stamp-$date1_stamp;
    $passArr = array();
    $oneDay = 86400;
    $maxTime = 0;
    while ($maxTime<=$pass){
      $passArr[] = date('Y-m',$date1_stamp);
      $day = date('t',$date1_stamp);
      $mDay = $oneDay*$day;
      $maxTime += $mDay;
      $date1_stamp+=$mDay;
    }
    return $passArr;
} /**
* 根据指定日期段经过的年月日
* @param string $stime 开始时间
* @param string $ttime 结束时间
*/
public static function getPassDay(string $stime,string $ttime){   $s = strtotime($stime);
  $t = strtotime($ttime);
  if($s>$t)return [];
  $day = ($t-$s)/86400+1;
  $dateArr = array();
  for ($i = 0; $i< $day;$i++){
  $times = 86400*$i;
  $newTime = $s+$times;
  if($newTime<=$t) $dateArr[] = date('Y-m-d',$newTime);
  }
  return $dateArr;
  } /**
* 根据给定的时间,返回经过的小时
* @param string $stime 开始时间(小时) 例:"06:11:10"
* @param string $ttime 结束时间(小时) 例:"23:59:59"
* @return multitype:string
*/
public static function getPassTime(string $stime,string $ttime){   $stimeNum = date('H',strtotime($stime));
  $ttimeNum = date('H',strtotime($ttime));
  $hourArr = array();
  for($i=$stimeNum;$i<=$ttimeNum;$i++){
    $hourArr[] = (strlen($i) == 1)?'0'.$i:$i;
  }
  return $hourArr;
} /**
* 根据给定日期,返回开始小时和结束小时
* @param string $stime 开始时间(小时) 例:"06:11:10"
* @param string $ttime 结束时间(小时) 例:"23:59:59"
* @return multitype:string
*/
public static function getHourData(string $stime, string $ttime){
  $sHourNum = date('H',strtotime($stime));
  $tHourNum = date('H',strtotime($ttime));
  return array(     'shour'=>$sHourNum,     'thour'=>$tHourNum   );
} /**
* 获取指定日期开始和结束日期
* @param string $day 日期
* @return multitype:string
*/
public static function getWeekDay(string $day){
  $time = strtotime($day);
  $stime = date("Y-m-d",mktime(0, 0 , 0,date("m",$time),date("d",$time)-date("w",$time)+1,date("Y",$time)));
  $ttime = date("Y-m-d",mktime(23,59,59,date("m",$time),date("d",$time)-date("w",$time)+7,date("Y",$time)));
  return array('stime'=>$stime,'ttime'=>$ttime);
} /**
* 获取指定周的日期
* @param string $day 日期
* @return multitype:string
*/
public static function getWeekPassDay(string $day){
  $dateArr = self::getWeekDay($day);
  return self::getPassDay($dateArr['stime'],$dateArr['ttime']);
} /**
* 获取日期信息
* @param string $timeStr 指定时间戳
* @param array $dateArr 传入内容信息
* @return number
*/
public static function getDateInfo(string $timeStr='',$dateArr = array()){   if(empty($timeStr))$timeStr = time();   //年
  $dateArr['cyear'] = date('Y',$timeStr);
  //数字月
  $dateArr['cmonth'] = date('m',$timeStr);
  //星期几
  $dateArr['cweek'] = date('N',$timeStr);
  //天
  $dateArr['cdate'] = date('Y-m-d',$timeStr);
  //数字时
  $dateArr['chour'] = date('H',$timeStr);
  return $dateArr;
} /**
* 获取季度信息
* @param int $dmonth 月份
* @return number
*/
public static function getQuarterFun(int $dmonth){   if($dmonth < 4){
    $quarter = 1;
  }else if($dmonth > 3 && $dmonth < 7){
    $quarter = 2;
  }else if($dmonth > 6 && $dmonth < 10){
    $quarter = 3;
  }else{
    $quarter = 4;
  }
  return $quarter;
} /**
* 返回季度经过的月份起止
* @param int $unixTime 时间戳
* @return multitype:string
*/
public static function getQuarterPassMonth(int $unixTime){
$quarter = self::getQuarterFun(date('m',$unixTime));
if(1== $quarter){
$sMonth = '-01-01';
$tMonth = '-03-31';
}elseif(2 == $quarter){
$sMonth = '-04-01';
$tMonth = '-06-30';
}elseif(3 == $quarter){
$sMonth = '-07-01';
$tMonth = '-09-30';
}elseif(4 == $quarter){
$sMonth = '-10-01';
$tMonth = '-12-31';
}
return array('smonth'=>$sMonth,'tmonth'=>$tMonth);
} /**
* 返回某年某月第几个周几是哪一天
*
* @param int $moon 月份
* @param int $num 第几个
* @param string $week 周几
* @param string $f 返回日期格式
* @param string $year 返回哪一年的,默认是当前年份
* @return multitype:boolean string
*/
public static function week(int $moon=1,int $num=1,string $week='7',string $f='Y-m-d',string $year=NULL){ if(empty($year))$year = date('Y');
$times = $year.'-'.$moon;
$t = date('t',strtotime($times));
$ws = array();
for($i=1;$i<=$t;$i++){
$date=$times.'-'.$i;
$w=date('N',strtotime($date));
if ($w==$week)$ws[] = $date;
}
if(isset($ws[$num-1]))return array('success'=>true,data=>date($f,strtotime($ws[$num-1])));
$msg = "当前信息错,{$year}年{$moon}月第{$num}个周{$week}不存在";
return array('success'=>false,'data'=>$msg);
} /**
* 获取距离当前多少时间
* @param string $time 时间字符串
*/
public static function gettimelast(string $time){
$now = time();
$time = strtotime($time);
$t = $now-$time;
if($t<60){
return '<span style="color:green">'.$t.'秒前</span>';
}
if($t<3600){
return '<span style="color:#ff892a">'.ceil($t/60).'分钟前</span>';
}
if($t<86400){
return '<span style="color:#478fca">'.ceil($t/60/60).'小时前</span>';
}
return date('Y-m-d H',$time);
} /**
* 获取某一天是每年的第几周,解决跨年问题
* @param string $time 时间戳
* @return string
*/
public static function get_time_week(string $time){
$year = date('Y',$time);
$week = date('W',$time);
if($week == '01'){
$month = date('m',$time);
if($month == '12'){
$year = $year+1;
}
}
return $year.$week;
} /**
* 获取一年多少周,每周的开始日期和结束日期
* @param string $year
* @return multitype:mixed
*/
public static function get_week(string $year = '') {
if(empty($year)) $year = date('Y');
$weeks = date("W", mktime(0,0,0,12,28,$year));
for($i = 1;$i<=$weeks;$i++){
$m = $i;
if($m<10){
$m = '0'.$m;
}
$timestamp['start'] = strtotime($year.'W'.$m);
$timestamp['end'] = strtotime('+6 day',$timestamp['start']);
$weekArr[$i] = array(date("Y-m-d",$timestamp['start']), date("Y-m-d",$timestamp['end']));
}
return $weekArr;
} /**
* 获取一周的起始日期
* @param unknown $week 例如:201552
* @return string[]
*/
public static function get_week_st(string $week){
$year = substr($week,0,4);
$week = substr($week,4,6);
$timestamp['start'] = strtotime($year.'W'.$week);
$timestamp['end'] = strtotime('+1 week -1 day',$timestamp['start']);
return array(date("Y-m-d",$timestamp['start']),date("Y-m-d",$timestamp['end']));
} /**
* 获取两天之间的间隔天数
* @param string $date1 开始时间
* @param string $date2 结束时间
* @return number
*/
public static function dateDiff(string $date1, string $date2) { $datetime1 = new \DateTime($date1);
$datetime2 = new \DateTime($date2);
$interval = $datetime1->diff($datetime2);
return $interval->format('%a');
} /**
* 获取一年内每月的起止日期
* @param string $year
* @return multitype:multitype:string
*/
public static function get_month(string $year = ''){
if(empty($year)) $year = date('Y');
$tmp = array();
for($i=1;$i<13;$i++){
$firstday = $year.'-'.($i<10?'0'.$i:$i).'-01';
$lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
$tmp[$i] = array($firstday, $lastday);
}
return $tmp;
}
/**
* 获取一年内每季度的起止日期
* @param string $year
* @return multitype:NULL
*/
public static function get_quarter(string $year = ''){
if(empty($year)) $year = date('Y');
$month = self::get_month($year);
$quarter_array = array();
for($i=1;$i<5;$i++){
$m = $i==1?$i:$m+3;
$quarter_array[$i] = array(
$month[$m][0],
$month[($m)+2][1]
);
}
return $quarter_array;
} /**
* 获取一年的起止日期
* @param string $year
* @return multitype:NULL
*/
public static function get_year(string $year = ''){
if(empty($year)) $year = date('Y');
$month = self::get_month($year);
return array($month[1][0],$month[12][1]);
} /**
* 根据指定日期段经过的年-周
* @param string $stime 开始时间
* @param string $ttime 结束时间
*/
public static function getPastYearWeek(string $stime,string $ttime){
  $s = strtotime($stime);
  $t = strtotime($ttime);
  $day = (($t-$s)/(86400*7))+1;
  $dateArr = array();
    for ($i = 0; $i< $day;$i++){       $times = 86400*$i*7;
      $newTime = $s+$times;
    if($newTime<=$t) $dateArr[] = date('Y-W',$newTime);
}
return $dateArr;
} /**
* 获取两个时间段经过的小时(Y-m-d H)格式
*/
public static function getPastYmdh(string $stime,string $ttime){
  $s = strtotime($stime);
  $t = strtotime($ttime);
  if($s>$t)return [];
  $day = ($t-$s)/3600+1;
  $dateArr = array();
    for ($i = 0; $i< $day;$i++){
      $times = 3600*$i;
      $newTime = $s+$times;
    if($newTime<=$t) $dateArr[] = date('Y-m-d H',$newTime);
}
return $dateArr;
}

  

获取同时间段不同的时间 php的更多相关文章

  1. java获取一个时间段内的时间天数

    package com.hzcominfo.hik.hikbigscreen.core; import java.text.SimpleDateFormat; import java.util.Arr ...

  2. PHP date()获取某时间段以周、月、季度为粒度的时间段数组

    date()函数: PHP date()  参考:https://www.hi-docs.com/php/date.html Linux date()参考:http://www.cnblogs.com ...

  3. [WinAPI] API 14 [获取、设置文件属性和时间]

    >_< 为了获取文件属性,用户可以使用GetFileAttributes与GetFileAttributesEx函数. GetFileAttributesEx函数除了返回文件属性外,还返回 ...

  4. java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti ...

  5. Android获取设备採用的时间制式(12小时制式或24小时制式)

    /** * 获取设备採用的时间制式(12小时制式或者24小时制式) * 注意: * 在模拟器上获取的时间制式为空 */ private void getTime_12_24(Context conte ...

  6. Java获取当前的日期和时间

    Java获取当前的日期和时间 1.具体实现方法如下 /** * @Title:DateTime.java * @Package:com.you.model * @Description:获取当前的日期 ...

  7. oracle 根据一个时间段获取这个时间段内所有月份、天数、日期

    注:本文来源于< oracle 根据一个时间段获取这个时间段内所有月份.天数.日期 > 获取月份列表: SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2014-10 ...

  8. python 27 获取时区转换后的时间

    python3的datetime有timezone属性,这里介绍python2.7环境下,获取时区转换后的时间. 利用第三方插件,pytz,没有安装的话安装一下. #!/usr/bin/env pyt ...

  9. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. Windows 查看硬盘ID(diskpart命令)

    使用diskpart命令Win+R键运行cmd,进入命令行界面:1.diskpart2.list disk 查看有几块硬盘3.select disk 0 选择第一块硬盘4.detail disk 显示 ...

  2. SVN入门图解教程(超详细)

    SVN入门图解教程(超详细) 一.总结 一句话总结: 二.SVN入门教程 1. 什么是SVN SVN全名Subversion,即版本控制系统.SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操 ...

  3. 微信管理系统基于Flask+Vue+Celery+SQLAlchemy+Redis等实现

    https://zhuanlan.zhihu.com/p/28102858 现在绝大多数同学都在使用微信,不过微信有很多限制,比如: 微信聊天记录只保存在本地,换个手机那些内容就找不到了 微信扫码加群 ...

  4. Go语言学习(十)bytes包处理字节切片

    bytes包提供了对字节切片进行读写操作的一系列函数 字节切片处理的函数比較多,分为基本处理函数,比較函数,后缀检查函数,索引函数,切割函数, 大写和小写处理函数和子切片处理函数等. 1.字节切片基本 ...

  5. GTID的限制

    1.不支持非事务引擎(从库报错,stop slave;start slave;忽略). 2.不支持create table ... select 语句复制(主库直接报错). 3.不允许一个SQL同时更 ...

  6. iOS 简单的描述KVO使用

    // //  ViewController.m //  KVOtest // //  Created by Mac on 15/10/17. //  Copyright © 2015年 聂小波. Al ...

  7. Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...

  8. 【codeforces 779A】Pupils Redistribution

    [题目链接]:http://codeforces.com/contest/779/problem/A [题意] 让你把两个组的5个人的数目都变成一样的. 支持交换操作; 问你最少需要交换几次. [题解 ...

  9. 数据批量插入MSSQL

    MSSQL数据批量插入优化详细   序言 现在有一个需求是将10w条数据插入到MSSQL数据库中,表结构如下,你会怎么做,你感觉插入10W条数据插入到MSSQL如下的表中需要多久呢? 或者你的批量数据 ...

  10. git记不住用户名和密码

    以前我是用svn的 , 我也是最近才用的git 虽然git 有GUI界面  , 但是我觉得还是不如svn 最开始使用git的时候我们直接clone项目的时候可能会设置全局的账号和密码 , 但是我重装系 ...