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 相关文章推荐
初学者入门:细述PHP4的核心Zend
Sep 05 PHP
随机广告显示(PHP函数)
Oct 09 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
浅析PHP绘图技术
Jul 03 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 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读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python3实现windows下同名进程监控
2018/06/21 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
对python字典过滤条件的实例详解
2019/01/22 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
详解Django admin高级用法
2019/11/06 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
视光学专业毕业生推荐信
2013/10/28 职场文书
生日寿宴答谢词
2014/01/19 职场文书
工厂车间标语
2014/06/19 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年度物流工作总结
2015/04/30 职场文书