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和ACCESS写聊天室(三)
Oct 09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
php的大小写敏感问题整理
Dec 29 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
yii用户注册表单验证实例
Dec 26 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
PHP sdk实现在线打包代码示例
Dec 09 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笔记之:基于面向对象设计的详解
2013/05/14 PHP
php简单实现快速排序的方法
2015/04/04 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
js简单时间比较的方法
2016/08/02 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
python实现数独算法实例
2015/06/09 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
详解django2中关于时间处理策略
2019/03/06 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
夜班门卫岗位职责
2013/12/09 职场文书
项目开发计划书
2014/01/09 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
汽车广告策划方案
2014/05/31 职场文书
夫妻吵架保证书
2015/05/08 职场文书
青春雷锋观后感
2015/06/10 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL