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 超链接 抓取实现代码
Jun 29 PHP
JS 网站性能优化笔记
May 24 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
php生成短域名函数
Mar 23 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
php+ajax实现无刷新分页
Nov 18 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
简单实现PHP留言板功能
Dec 21 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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图片加中文水印实现代码分享
2012/10/31 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
Python translator使用实例
2008/09/06 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python获取当前路径实现代码
2017/05/08 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
高二化学教学反思
2014/01/30 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
保护环境的标语
2014/06/09 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
趣味运动会口号
2015/12/24 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers