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实现文件安全下载
Oct 09 PHP
PHP获取网站域名和地址的代码
Aug 17 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
Oct 16 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
PHP中串行化用法示例
Nov 16 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php创建类并调用的实例方法
Sep 25 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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/06/30 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
python验证身份证信息实例代码
2019/05/06 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
python 实现多维数组(array)排序
2020/02/28 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
导致python中import错误的原因是什么
2020/07/01 Python
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
shell变量的作用空间是什么
2013/08/17 面试题
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
大学生自荐材料范文
2014/12/30 职场文书
师范生教育见习总结
2015/06/23 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
SpringBoot生成License的实现示例
2021/06/16 Java/Android