PHP获取时间戳、获取天周月的起始时间、指定时间所在周、指定时间的各个周等相关函数

这篇具有很好参考价值的文章主要介绍了PHP获取时间戳、获取天周月的起始时间、指定时间所在周、指定时间的各个周等相关函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、时间戳和日期互相转换

// 获取时间戳
$date = time(); // 获取当前时间戳
$date = mktime(0, 0, 0, 10, 10, 2020); // 获取指定时间的时间戳 2020年10月10日0时0分0秒
 
// 日期转换为时间戳
$date = "2019-08-08 08:08:08";
$timestamp = strtotime($date);
 
// 将时间戳转换成日期
$date = time();
echo date('Y-m-d', $date); // 输出格式化的日期(年-月-日)
 
// 将时间戳转换为时间格式
$date = time();
echo date('H:i:s', $date); // 输出格式化的时间(小时:分钟:秒)
 
// 日期格式化
$date = time();
echo date('Y-m-d H:i:s', $date); // 输出格式化的日期时间(年-月-日 小时:分钟:秒)
 
// 将时间戳转换为星期
$date = time();
echo date('l', $date); // 输出星期几的完整文本形式(例如:Sunday)
 
// 将时间戳转换为月份
$date = time();
echo date('F', $date); // 输出月份的完整文本形式(例如:January)
 
 

二、PHP获取今日、昨日、上周、本周、上月、本月的起始时间戳

//今日开始时间戳和结束时间戳
$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));
$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
 
//昨日起始时间戳和结束时间戳
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
 
//本周起始时间戳和结束时间戳
$startTime = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('y'));
$endTime = mktime(23,59,59,date('m'),date('d')-date('w')+7,date('y'));
 
//上周起始时间戳和结束时间戳
$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
 
//本月起始时间戳和结束时间戳
$beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));
$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));
 
//上月起始时间戳和结束时间戳
$begin_time = date('Y-m-01 00:00:00',strtotime('-1 month'));
$end_time = date("Y-m-d 23:59:59", strtotime(-date('d').'day'));
 
//获取当前季度
$season = ceil((date('m'))/3);
//本季度起始时间戳和结束时间戳
$starTime=mktime(0, 0, 0,$season*3-3+1,1,date('Y'));
$endTime = mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'));
 
//当年起始时间戳和结束时间戳
$startTime  = strtotime(date("Y",time())."-1"."-1"); 
$overTime  = strtotime(date("Y",time())."-12"."-31");  

三、获取当前周的每天的起始时间

function getDay(){
    $timestr = time();    //当前时间戳
    $now_day = date('w',$timestr);  //当前是周几
 
    //获取周一
    $monday_str = $timestr - ($now_day-1)*60*60*24;
    $monday = date('Y-m-d', $monday_str);
 
    //获取周日
    $sunday_str = $timestr + (7-$now_day)*60*60*24;
    $sunday = date('Y-m-d', $sunday_str);
 
    for($i=0;$i<7;$i++)  
    {  
        $arr[$i]['start']=strtotime(date('Y-m-d',strtotime($monday.'+'.$i.'day')));  
        $arr[$i]['end']=strtotime(date('Y-m-d',strtotime($monday.'+'.$i.'day')). " 24:00:00");  
    }
    return $arr; 
}

四、获取周的起始时间

1、根据指定时间获取所在周的起始时间和结束时间

/**
* @param data 日期
*/
function get_weekinfo_by_time($date) {
    $idx = strftime("%u", strtotime($date));
    $mon_idx = $idx - 1;
    $sun_idx = $idx - 7;
    return array(
      'week_start_day' => strftime('%Y-%m-%d', strtotime($date) - $mon_idx * 86400),
      'week_end_day' => strftime('%Y-%m-%d', strtotime($date) - $sun_idx * 86400),
      );
}

2、通过时间戳 获取某周的开始时间和结束时间 

/**
* @param time 时间
* @param first 表示每周星期一为开始日期 0表示每周日为开始日期
*/
function getWeekMyActionAndEnd($time = '', $first = 1)
{
  //当前日期
  if (!$time) $time = time();
  $sdefaultDate = date("Y-m-d", $time);
  //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
  //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
  $w = date('w', strtotime($sdefaultDate));
  //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
  $week_start = date('Y-m-d', strtotime("$sdefaultDate -" . ($w ? $w - $first : 6) . ' days'));
  //本周结束日期
  $week_end = date('Y-m-d', strtotime("$week_start +6 days"));
  return array("week_start" => $week_start, "week_end" => $week_end);
}

五、获取指定日期是周几

/**
* @param data 日期
*/
function DateToWeek($date){
    //强制转换日期格式
    $date_str=date('Y-m-d',strtotime($date));
 
    //封装成数组
    $arr=explode("-", $date_str);
     
    //参数赋值
    //年
    $year=$arr[0];
     
    //月,输出2位整型,不够2位右对齐
    $month=sprintf('%02d',$arr[1]);
     
    //日,输出2位整型,不够2位右对齐
    $day=sprintf('%02d',$arr[2]);
     
    //时分秒默认赋值为0;
    $hour = $minute = $second = 0;   
     
    //转换成时间戳
    $strap = mktime($hour,$minute,$second,$month,$day,$year);
     
    //获取数字型星期几
    $number_wk=date("w",$strap);
     
    //自定义星期数组
    $weekArr=array("周日","周一","周二","周三","周四","周五","周六");
     
    //获取数字对应的星期
    return $weekArr[$number_wk];
}

六、通过某个日期段内的周几获取对应的日期  开始日期 结束日期 

/**
* @param data 日期 array(start_date,end_data)
*/
function getDateByWeek($data)
{
    $start_date = strtotime($data['start_date']);
    $end_date = strtotime($data['end_date']);
    $days = ($end_date - $start_date) / 86400;
    $weekArr = array('周日','周一','周二','周三','周四','周五','周六');
    $newDate = array();
    // 组建数组格式 $dataWeek['日期'] => 星期
    for ($i=0; $i < $days; $i++) { 
        $num_week = date('w',$start_date+($i*86400));
        $dateWeek[date('Y-m-d',$start_date+($i*86400))] = $weekArr[$num_week];
    }
    // 查找两个数组的交集,即获取提交的星期对应的日期
    $newDate=array_intersect($dateWeek,$data['items']);
    // 获取数组中的键值(日期),并组成一个新数组
    $date = array_keys($newDate);
    return $date;
}

七、获取指定日期之间的各个周

/**
* @param sdate 开始日期
* @param edate 结束日期
*/
function get_weeks($sdate, $edate) {
    $range_arr = array();
    // 检查日期有效性
    check_date(array($sdate, $edate));
    // 计算各个周的起始时间
    do {
      $weekinfo = get_weekinfo_by_date($sdate);
      $end_day = $weekinfo['week_end_day'];
       $start = substr_date($weekinfo['week_start_day']);
      $end = substr_date($weekinfo['week_end_day']);
      $range = "{$start} ~ {$end}";
      $range_arr[] = $range;
       $sdate = date('Y-m-d', strtotime($sdate)+7*86400);
    }while($end_day < $edate);
    return $range_arr;
}
 
/**
  * 检查日期的有效性 YYYY-mm-dd
  * @param array $date_arr
  * @return boolean
  */
function check_date($date_arr) {
    $invalid_date_arr = array();
    foreach ($date_arr as $row) {
      $timestamp = strtotime($row);
      $standard = date('Y-m-d', $timestamp);
      if ($standard != $row) $invalid_date_arr[] = $row;
    }
    if ( ! empty($invalid_date_arr)) {
      die("invalid date -> ".print_r($invalid_date_arr, TRUE));
    }
} 
 
/**
   * 截取日期中的月份和日
   * @param string $date
   * @return string $date
   */
   function substr_date($date) {
    if ( ! $date) return FALSE;
    return date('m-d', strtotime($date));
  }
 
/**
   * 根据指定日期获取所在周的起始时间和结束时间
   */
   function get_weekinfo_by_date($date) {
    $idx = strftime("%u", strtotime($date));
    $mon_idx = $idx - 1;
    $sun_idx = $idx - 7;
    return array(
      'week_start_day' => strftime('%Y-%m-%d', strtotime($date) - $mon_idx * 86400),
      'week_end_day' => strftime('%Y-%m-%d', strtotime($date) - $sun_idx * 86400),
      );
  }

八、获取指定日期之间的各个月

/**
* @param sdate 开始日期
* @param edate 结束日期
*/
function get_months($sdate, $edate) {
    $range_arr = array();
    do {
      $monthinfo = get_monthinfo_by_date($sdate);
      $end_day = $monthinfo['month_end_day'];
       $start = substr_date($monthinfo['month_start_day']);
      $end = substr_date($monthinfo['month_end_day']);
      $range = "{$start} ~ {$end}";
      $range_arr[] = $range;
       $sdate = date('Y-m-d', strtotime($sdate.'+1 month'));
    }while($end_day < $edate);
    return $range_arr;
  }
 
/**
   * 截取日期中的月份和日
   * @param string $date
   * @return string $date
   */
   function substr_date($date) {
    if ( ! $date) return FALSE;
    return date('m-d', strtotime($date));
  }
 
/**
   * 根据指定日期获取所在月的起始时间和结束时间
   */
   function get_monthinfo_by_date($date){
    $ret = array();
    $timestamp = strtotime($date);
    $mdays = date('t', $timestamp);
    return array(
      'month_start_day' => date('Y-m-1', $timestamp),
      'month_end_day' => date('Y-m-'.$mdays, $timestamp)
      );
  }

九、根据指定日期获取所在月的起始时间和结束时间

/**
* @param date 日期
*/
function get_monthinfo_by_date($date){
    $ret = array();
    $timestamp = strtotime($date);
    $mdays = date('t', $timestamp);
    return array(
      'month_start_day' => date('Y-m-1', $timestamp),
      'month_end_day' => date('Y-m-'.$mdays, $timestamp)
      );
}

十、获取指定年份的每个月的起始时间

/**
* @param year 年份
*/
function getMonthByDate($year)
{
    // $year = '2019';
    $yeararr = [];
    $month = [];
    for ($i=1; $i <=12 ; $i++) { 
        $yeararr[$i] = $year.'-'.$i;
    }
    foreach ($yeararr as $key => $value) {
        $timestamp = strtotime($value );
        $start_time = date( 'Y-m-1 00:00:00', $timestamp );
        $mdays = date( 't', $timestamp );
        $end_time = date( 'Y-m-' . $mdays . ' 23:59:59', $timestamp );
 
        $month[$key]['start_time'] = strtotime($start_time);
        $month[$key]['end_time'] = strtotime($end_time);
    }
    return $month;
}

 十一、获取指定月份的起止时间戳

/**
* 获取指定月份的时间戳
* @param $date Y-m
*/
function get_month_begin_end($date){

    // $date = '2018-11';

    $data['begin_time'] = strtotime($date);  //指定月份月初时间戳  
    $data['end_time'] = mktime(23,59,59,date('m',strtotime($date))+1,00);   //指定月份月末时间戳

    return $data;
}

 文章来源地址https://www.toymoban.com/news/detail-433172.html

到了这里,关于PHP获取时间戳、获取天周月的起始时间、指定时间所在周、指定时间的各个周等相关函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • php获取客户端ip地址及ip所在国家、省份、城市、县区

    获取客户端ip地址,然后使用这个ip地址获取所在的国家、省份、城市,可以在网站中实现IP属地,发布地等功能。 本文的获取IP地址信息均采自网络上免费的IP查询网站,通过其API或者网页HTML解析出的ip地址信息。 https://域名/getipInfo.php?ip=需要查询的IP地址 一共有5个接口,接

    2024年02月09日
    浏览(43)
  • uni-app:实现当前时间的获取,并且根据当前时间判断所在时间段为早上,下午还是晚上

    获取当前时间 toString() 方法将数字转换为字符串 padStart(2, \\\'0\\\') : padStart() 方法用于在字符串头部填充指定的字符,使其达到指定的长度。该方法接受两个参数:第一个参数为期望得到的字符串长度,第二个参数为要填充的字符。 时间段的判断 根据小时来判断当前的时间段,

    2024年02月08日
    浏览(59)
  • php以半小时为单位,输出指定的时间范围

    输出结构

    2024年02月07日
    浏览(39)
  • Java获取指定时间一周至周日的日期

     Java获取指定时间一周至周日的日期: 测试类: 输出:  

    2024年02月13日
    浏览(47)
  • php 获取当前时间前一天

    您可以使用 PHP 的 strtotime 函数和 date 函数来获取当前时间的前一天。 例如,要获取当前时间的前一天,可以使用以下代码: 上面的代码中, strtotime(\\\'-1 day\\\') 会返回当前时间的 Unix 时间戳,再减去一天(即 86400 秒)。然后,我们使用 date 函数来格式化日期。 如果要获取其他时间

    2024年02月16日
    浏览(47)
  • 使用php 获取时间今天、明天、昨天时间戳的详解

    使用php获取时间今、明天、昨天时间戳 本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值相对于 now  参数给出的时间,如果没有提供此参数则用系统当前时间。 ----------------------------------------------

    2024年02月09日
    浏览(54)
  • PHP实现获取毫秒时间戳的方法

    PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数。 php的毫秒是没有默认函数的,但提供了一个microtime()函数,该函数返回包含两个元素,一个是秒数,一个是小数表示

    2024年02月15日
    浏览(41)
  • pgsql 创建自增ID , 指定自增ID起始值

    1. 创建序列: 2. 将序列与表的列关联: 3. 设置序列的起始值、递增步长和最大值 其他 用以下命令查看当前序列的值: 使用nextval函数可以返回下一个最新的序列值,并使序列递增。

    2024年02月02日
    浏览(34)
  • java根据当前时间或指定时间获取前后几天或前后几个月或前后几年的时间

    获取前后几天 获取前后几个月 获取前后几年 获取前后几天 获取前后几个月 获取年后几年

    2024年02月15日
    浏览(46)
  • python获取一个月的第一天/最后一天

    输出将类似于以下内容: 请注意,上述代码将使用当前的系统日期和时间来获取当前月份的第一天。你也可以手动指定日期和时间来获取特定月份的第一天,如下所示: 输出将类似于以下内容: 输出将类似于以下内容: 请注意,上述代码将使用当前的系统日期和时间来获取

    2024年02月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包