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的FTP学习(一)
Oct 09 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
yii框架中的Url生产问题小结
Jan 16 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
php中adodbzip类实例
Dec 08 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
获取URL文件名后缀
2013/10/24 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
javascript的push使用指南
2014/12/05 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
jQuery操作属性和样式详解
2016/04/13 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
汉森批发:Hansen Wholesale
2018/05/24 全球购物
J2EE模式面试题
2016/10/11 面试题
护理人员的自我评价分享
2014/03/15 职场文书
小学学校评估方案
2014/06/08 职场文书
重阳节活动总结
2014/08/27 职场文书
原告代理词范文
2015/05/25 职场文书
植物园观后感
2015/06/11 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python
Django框架模板用法详解
2022/06/10 Python