经常在朋友圈,QQ空间、微博上看到动态的发布时间、评论时间,都显示,昨天,前天,几天前,比起直接显示几月几日几分几秒要优雅的多。

于是自己的项目也想采用这种优雅直观的方式,网上找了各种计算相差几天的的例子,都是直接将时间戳相见除以86400,比如现在是17:08,动态更新的时间为前天22:00,这种方式计算的相差天数为1,而不是两天前。

实际情况应该是,昨天任何时间都算一天前,前天任意时间都算2天前,所以自己琢磨了一番,去动态更新时间与今天23:59:59相差的时间秒数与86400(24 x 3600)相除后,向下取整,这样就得到了相差的天数,比如昨天00:00~昨天23:59:59的任何时间与今天的23:59:59,都相差 86400~(86400 x 2) 天,也就是2天。

/**

* 获取已经过了多久

* PHP时间转换

* 刚刚、几分钟前、几小时前

* 今天昨天前天几天前

* @param string $targetTime 时间戳

* @return string

*/

function get_last_time($targetTime)

{

// 今天最大时间

$todayLast = strtotime(date('Y-m-d 23:59:59'));

$agoTimeTrue = time() - $targetTime;

$agoTime = $todayLast - $targetTime;

$agoDay = floor($agoTime / 86400);

if ($agoTimeTrue < 60) {

$result = '刚刚';

} elseif ($agoTimeTrue < 3600) {

$result = (ceil($agoTimeTrue / 60)) . '分钟前';

} elseif ($agoTimeTrue < 3600 * 12) {

$result = (ceil($agoTimeTrue / 3600)) . '小时前';

} elseif ($agoDay == 0) {

$result = '今天 ' . date('H:i', $targetTime);

} elseif ($agoDay == 1) {

$result = '昨天 ' . date('H:i', $targetTime);

} elseif ($agoDay == 2) {

$result = '前天 ' . date('H:i', $targetTime);

} elseif ($agoDay > 2 && $agoDay < 16) {

$result = $agoDay . '天前 ' . date('H:i', $targetTime);

} else {

$format = date('Y') != date('Y', $targetTime) ? "Y-m-d H:i" : "m-d H:i";

$result = date($format, $targetTime);

}

return $result;

}

php 昨天,PHP时间转换今天昨天前天几天前相关推荐

  1. Hive、Presto、PostgreSQL 时区、日期、时间转换(昨天、周)

    Hive UTC转GMT+0800(东八区) select from_utc_timestamp(cast(regexp_replace(regexp_replace('2019-07-12T09:0 ...

  2. Android 时间转换 今天 昨天 前天 的样式

    今天整理到一个需求是 如果是今天的时间只需要显示时分就好 要是昨天的就显示 昨天 前天的显示前天 其他的就显示年月日时分秒了 代码如下 /*** 和当前时间比较*/public static Stri ...

  3. c语言 北京时间转换utc时间_PHP时间戳和日期相互转换操作

    在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明. 1. php中时间转换函数 strtotime ...

  4. 类似新浪微博动态发布时间转换机制,显示刚刚、几分钟前、几小时前、昨天、前天····

    经常看到社交类app中关于动态发布的时间点与当前时间的换算,说麻烦也不麻烦,说简单也不简单,只是计算起来有点绕.如以当前时间为基准,自己某个时间在微博上发表一个动态,发表时间提示有多种显示,如刚刚.几 ...

  5. vue中 根据时间戳 判断对应的时间(今天 昨天 前天)

    根据时间戳 来显示对应的时间段 本文是根据vue所写,但是原理都是相通的 根据一个时间戳,然后来显示对应的时间段.如果为今天,则显示对应的time,如果为昨天,则显示为昨天,如果为前天,则显示为前天. ...

  6. 时间戳与时间转换、js时间戳判定是 今天、昨天还是更前的日子

    //1. js时间戳判定是否是 -1 今天 0 昨天 1更前的日子 console.log(_GetDateStr(1572431608)) //2019-10-30 18:40:04 functio ...

  7. python现在的时间是几点_python获取当前时间、今天零点、235959点、昨天当前时间、明天的当前时间...

    python获取当前时间.今天零点.23:59:59点.昨天当前时间.明天的当前时间. 关注公众号"轻松学编程"了解更多. 获取当前时间.今天零点 使用timedalte. tim ...

  8. Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)

    Java时间工具类(把日期时间转换成xx秒前.xx分钟前.xx小时前...) package com.liuzy.javaopen.entity; import java.text.ParseExce ...

  9. iOS 时间转换总结

    今天整理一下时间转换的类. 1.获取当前时间字符串 /*** 当前时间字符串** @param format 时间格式 @"yyyy-MM-dd HH:mm:ss"** @retu ...

最新文章

  1. java.lang.OutOfMemoryError: PermGen space及其解决方法
  2. 调查:中国CIO在亚太拥最大战略影响力
  3. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )
  4. 围城之势已起,拼多多骑虎难下
  5. SSL四次握手的过程
  6. 参加首届中国 .NET 开发者峰会有感
  7. sublime php快捷键,分享Sublime Text 3快捷键精华版!
  8. cmos图像传感器应用实例及其发展趋势分析
  9. 如何知道PostgreSQL数据库下每个数据库所对应的目录
  10. 大数据分析的价值体现
  11. 如何借助大数据进行社交媒体营销
  12. xdcms_3.0.1 | 代码审计
  13. [RK3399][Android7.1] 调试笔记 --- 查看当前DDR的工作频率
  14. stm8s电机库vtimer_SetTimer()函数的使用
  15. OI生涯回忆录(Part5:至初中竞赛生涯完)
  16. 飞行计算机配置,微软飞行模拟器配置要求一览 最低/最高PC配置详情
  17. windows笔记本触摸板的快捷键教程
  18. [转]JavaScript自动生成博文目录导航
  19. 【自学51单片机】3 -- 硬件基础知识(电容、三极管、74HC245、74HC138三八译码器)介绍和闪烁LED小灯
  20. 「表白神器」Python超火隐藏表白图 你能看出来吗?「附源码」

热门文章

  1. 制作个人图片api接口
  2. CASE WHEN 和CASE ** WHEN
  3. 解决IDEA报错:There is no getter for property named
  4. 共享单车用完乱停乱放怎么办?“电子围栏” 来帮忙
  5. Deep Ordinal Regression Network for Monocular Depth Estimation 单目深度估计,论文阅读,DORN;视频笔记
  6. 论文笔记:Excavating the Potential Capacity of Self-Supervised Monocular Depth Estimation
  7. Android微信支付,支付成功后并返回指定页面
  8. 基于html+css的四张图片并排
  9. mysql的real类型_MSSQL数据类型-浮点数据类型 (real、float、decimal、numeric)
  10. springdatajpa的表名大小写问题