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 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
PHP开发微信支付的代码分享
May 25 PHP
destoon官方标签大全
Jun 20 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
php简单实现快速排序的方法
Apr 04 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
php批量删除超链接的实现方法
Oct 19 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
CI框架的安全性分析
2016/05/18 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
wxpython绘制音频效果
2019/11/18 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
如何解决安装python3.6.1失败
2020/07/01 Python
python实现梯度下降算法的实例详解
2020/08/17 Python
html5读取本地文件示例代码
2014/04/22 HTML / CSS
大学军训感言1500字
2014/03/09 职场文书
士力架广告词
2014/03/20 职场文书
实习报告评语
2014/04/26 职场文书
创先争优标语
2014/06/27 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
公开致歉信
2019/06/24 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
2022微信温控新功能上线
2022/05/09 数码科技