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 相关文章推荐
附件名前加网站名
Mar 23 PHP
PHP仿盗链代码
Jun 03 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
Jan 03 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
PHP实现根据银行卡号判断银行
Apr 29 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 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
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php绘制一条直线的方法
2015/01/24 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
解析vue中的$mount
2017/12/21 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python用GET方法上传文件
2015/03/10 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
高效使用Python字典的清单
2018/04/04 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
EJB与JAVA BEAN的区别
2016/08/29 面试题
网络编辑岗位职责范本
2014/02/10 职场文书
优秀党员个人总结
2015/02/14 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android