PHP常用函数之格式化时间操作示例


Posted in PHP onOctober 21, 2019

本文实例讲述了PHP常用函数之格式化时间操作。分享给大家供大家参考,具体如下:

/**
 * 格式化时间
 * @param $time 时间戳
 * @return bool|string
 */
function formatTimeToNow($time){
  //获取现在的时间戳
  $nowtime = time();
  if($time>$nowtime){
    return '';
  }else{
    $tc = $nowtime-$time;
    if( $tc >= 864000 ){
      $str = date('Y-m-d H:i',$time);//如果大于10天,则直接显示日期
    }else if( $tc >= 86400){
      $str = floor($tc/86400) . "天前";//如果大于1天
    }else if( $tc >= 3600) {
      $str = floor($tc / 3600) . "小时前";//如果大于1小时
    }else if( $tc >= 60) {
      $str = floor($tc / 60) . "分钟前";//如果大于1分钟
    }else{
      $str = "刚刚";
    }
    return $str;
  }
}
/**
 * 将中文的日期格式化为正常的日期
 * @param $date
 * @return mixed
 */
function formatCnDateToDate($date){
  //把年月替换为-,日替换为空
  $date = str_replace('年','-',$date);
  $date = str_replace('月','-',$date);
  $date = str_replace('日','',$date);
  //避免提交的格式不统一,例如2018-3-2等,标准化
  return date('Y-m-d',strtotime($date));
}
/**
 * 计算自然周期的开始时间戳和结束时间戳(周一到周日,月初到月末)
 * @param int $time_type 1表示自然天,2表示自然周,3表示自然月
 * @param int $prev_num 距离现在的值(前一周传-1,前两周传-2...)
 * @return array|bool
 */
function naturalFormatTime($time_type=1,$prev_num=0){
  $today_start_time = strtotime(date('Y-m-d 00:00:00',time()));//今天0点的时间戳
  if($time_type == 1){
    if($prev_num == 0){
      return array('start_time'=>$today_start_time,'end_time'=>time(),'show_date'=>date('Y年m月d日',time()));
    }else if($prev_num < 0){
      $start_time = $today_start_time - 86400*abs($prev_num);
      $end_time = $start_time + 86399;
      $show_date = date('Y年m月d日',$start_time);
      return array('start_time'=>$start_time,'end_time'=>$end_time,'show_date'=>$show_date);
    }else{
      return false;
    }
  }else if($time_type == 2){
    $today_week = date('w',$today_start_time);
    if($today_week == 0){
      $today_week_start_time = $today_start_time - 86400*6;
    }else{
      $today_week_start_time = $today_start_time - 86400*($today_week-1);
    }
    if($prev_num == 0){
      $show_date = date('Y年m月d日',$today_week_start_time);
      $show_date .= '至' . date('d日',time());
      return array('start_time'=>$today_week_start_time,'end_time'=>time(),'show_date'=>$show_date);
    }else if($prev_num < 0){
      $start_time = $today_week_start_time - 86400*7 * abs($prev_num);
      $end_time = $start_time + (86400*7-1);
      $show_date = date('Y年m月d日',$start_time);
      $show_date .= '至' . date('d日',$end_time);
      return array('start_time'=>$start_time,'end_time'=>$end_time,'show_date'=>$show_date);
    }else{
      return false;
    }
  }else if($time_type == 3){
    if($prev_num == 0){
      $today_day = ltrim(date('d',$today_start_time),0);
      $today_month_start_time = $today_start_time - 86400*($today_day-1);
      $show_date = date('Y年m月d日',$today_month_start_time);
      $show_date .= '至' . date('d日',time());
      return array('start_time'=>$today_month_start_time,'end_time'=>time(),'show_date'=>$show_date);
    }else if($prev_num < 0){
      $start_time = strtotime(date('Y-m-01', strtotime("$prev_num month")));
      $days = date('t',$start_time);
      $end_time = $start_time + 86400 * $days -1;
      $show_date = date('Y年m月d日',$start_time);
      $show_date .= '至' . date('d日',$end_time);
      return array('start_time'=>$start_time,'end_time'=>$end_time,'show_date'=>$show_date);
    }else{
      return false;
    }
  }else{
    return false;
  }
}
/**
 * 计算近一周或近一个月的开始时间戳和结束时间戳
 * @param $type 1表示今天,2表示近一周,3表示近一个月
 * @return array
 */
function nearFormatTime($type){
  $start_time = strtotime(date('Y-m-d 00:00:00'));//今天0点的时间戳
  $end_time = $start_time + 86399;//今天23:59的时间戳
  $res = array('start_time'=>0,'end_time'=>$end_time);
  if($type == 1){
    //今天
    $res['start_time'] = $start_time;
  }else if($type == 2){
    //近一周
    $res['start_time'] = $start_time - 86400*6;//包括今天,共七天
  }else if($type == 3){
    //近一个月
    $res['start_time'] = $start_time - 86400*30;//包括今天,共31天
  }
  return $res;
}
PHP 相关文章推荐
PHP date函数参数详解
Nov 27 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
通俗易懂的php防注入代码
Apr 07 PHP
php中日期加减法运算实现代码
Dec 08 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
php调用google接口生成二维码示例
Apr 28 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
php限制ip地址范围的方法
Mar 31 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
PHP常用函数之base64图片上传功能详解
Oct 21 #PHP
laravel5 Eloquent 实现事务方式
Oct 21 #PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 #PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 #PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 #PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 #PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 #PHP
You might like
PHP SQLite类
2009/05/07 PHP
解析argc argv在php中的应用
2013/06/24 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
php处理带有中文URL的方法
2016/07/11 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
javascript与CSS复习(三)
2010/06/29 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Django中Middleware中的函数详解
2019/07/18 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
怎样声明接口
2014/09/19 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
劳资专员岗位职责
2013/12/27 职场文书
会计岗位说明书
2014/07/29 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python