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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
小文件php+SQLite存储方案
Sep 04 PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
php清除和销毁session的方法分析
Mar 19 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 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
世界收音机发展史
2021/03/01 无线电
一个数据采集类
2007/02/14 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
javascript 函数速查表
2010/02/07 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python交互环境下实现输入代码
2018/06/22 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
客服工作职责
2013/12/11 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
初中优秀学生评语
2014/12/29 职场文书
离婚案件上诉状
2015/05/23 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python