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 静态变量的初始化
Nov 15 PHP
PHP中数组的三种排序方法分享
May 07 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
php按单词截取字符串的方法
Apr 07 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
php单例模式的简单实现方法
Jun 10 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 PHP
详细分析PHP7与PHP5区别
Jun 26 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 PDO函数库详解
2010/04/27 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
js实现select下拉框选择
2020/01/11 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
实例说明Python中比较运算符的使用
2015/05/13 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
Pytorch 实现权重初始化
2019/12/31 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
教师反腐倡廉演讲稿
2014/09/03 职场文书
个人贷款收入证明
2014/10/26 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
先进工作者事迹材料
2014/12/23 职场文书
公证书格式
2015/01/23 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
linux目录管理方法介绍
2022/06/01 Servers