文章目录

  • 摘要
  • 一、实现

摘要

计算过去某个时间距离现在经过了多久时间。

一、实现

package com.mtons.mblog.modules.template.method;import freemarker.template.TemplateModelException;
import com.mtons.mblog.modules.template.BaseMethod;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.util.Date;
import java.util.List;/*** 计算从前某个时间距离现在经过了多久时间* Created by langhsu on 2017/11/14.*/
public class TimeAgoMethod extends BaseMethod {private static final long ONE_MINUTE = 60000L;private static final long ONE_HOUR = 3600000L;private static final long ONE_DAY = 86400000L;private static final long ONE_WEEK = 604800000L;private static final String ONE_SECOND_AGO = "秒前";private static final String ONE_MINUTE_AGO = "分钟前";private static final String ONE_HOUR_AGO = "小时前";private static final String ONE_DAY_AGO = "天前";private static final String ONE_MONTH_AGO = "月前";private static final String ONE_YEAR_AGO = "年前";private static final String ONE_UNKNOWN = "未知";@Overridepublic Object exec(List arguments) throws TemplateModelException {Date time = getDate(arguments, 0);return format(time);}public static String format(Date date) {if (null == date) {return ONE_UNKNOWN;}long delta = new Date().getTime() - date.getTime();if (delta < 1L * ONE_MINUTE) {long seconds = toSeconds(delta);return (seconds <= 0 ? 1 : seconds) + ONE_SECOND_AGO;}if (delta < 45L * ONE_MINUTE) {long minutes = toMinutes(delta);return (minutes <= 0 ? 1 : minutes) + ONE_MINUTE_AGO;}if (delta < 24L * ONE_HOUR) {long hours = toHours(delta);return (hours <= 0 ? 1 : hours) + ONE_HOUR_AGO;}if (delta < 48L * ONE_HOUR) {return "昨天";}if (delta < 30L * ONE_DAY) {long days = toDays(delta);return (days <= 0 ? 1 : days) + ONE_DAY_AGO;}if (delta < 12L * 4L * ONE_WEEK) {long months = toMonths(delta);return (months <= 0 ? 1 : months) + ONE_MONTH_AGO;} else {long years = toYears(delta);return (years <= 0 ? 1 : years) + ONE_YEAR_AGO;}}private static long toSeconds(long date) {return date / 1000L;}private static long toMinutes(long date) {return toSeconds(date) / 60L;}private static long toHours(long date) {return toMinutes(date) / 60L;}private static long toDays(long date) {return toHours(date) / 24L;}private static long toMonths(long date) {return toDays(date) / 30L;}private static long toYears(long date) {return toMonths(date) / 365L;}public static void main(String[] args) throws ParseException {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date pDate = dateFormat.parse("2016-12-01");System.out.println(format(pDate));}
}

计算从前某个时间距离现在经过了多久时间相关推荐

  1. 多序列比对要多久时间_上海注册公司要多久时间?

    现在注册公司拿到的营业执照都是最新版的三证合一以后的横板营业执照,上海一网通办注册公司办理所需时间短了不少.那么,在上海注册一家公司要多久时间呢?以下是上海维易小编总结的每个流程大概所需时间,希望对您 ...

  2. 当前时间距离某个时间的天数计算_Excel如何计算当前距离某一天的时间?,原来是这样的...

    日常生活中,我们经常使用Excel,但是如何通过Excel计算当前距离某一天的方法呢? 下面我就详细以图文的方式进行解答. 工具/材料 Office 2007 一.Networkdays 函数 01 ...

  3. 调用百度api实现驾车路线和时间距离计算

    毕设篇:调用百度api实现驾车路线和时间距离计算 效果展示 html页面: <!DOCTYPE html> <html lang="en"><head ...

  4. 超简单MySql的DATEDIFF函数计算某个时间距离当前时间多少天。

    用到的mysql函数,DATEDIFF() 例: select DATEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d'),DATE_FORMAT(TB.SJ,'%Y-%m-%d') ...

  5. js计算时间差,两个时间的,或者是某个时间距离现在时间

    ..计算现在的时间.年月日时分秒 getNowFormatDate(type) {         var date = new Date();         var seperator1 = &q ...

  6. Java工具类 计算某个时间距离当前时间相差多少天、多少小时、多少分、多少秒

    /*** 计算传入时间距离当前时间多久** @param date* @return*/ public static String getTimeDiff(String date) {if (Obje ...

  7. 通过计算得到输入时间距离当前时间相差多少,天,时,分

    当我们比较两个时间戳相差多少天,分,秒.我们可以把两个时间戳先换算成毫秒级,得到差值,然后通过计算得到, 天,分,秒. 代码如下: public Map<Object, Object> J ...

  8. 通过时间戳,计算距离下一个周二和周六的时间距离

    时间戳是世界时间,通过它计算小时会比东八区少8个小时,得加8才是北京时间: -_-.,我竟然不知道.但是getHours()方法拿到的是电脑本地的时间. 踩了个坑,记录下避免下次忘记. 得➕8 得➕8 ...

  9. calendar类计算时间距离_日期时间--JAVA成长之路

    Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...

最新文章

  1. 区块链挖矿的钱从哪来 区块链挖矿怎么挣钱
  2. 阿里内部禁用Executors创建线程池,为什么?
  3. 自定义消息编码绑定实现
  4. 如何使用 Istio 进行多集群部署管理(一)
  5. 干货 | 算法工程师入门第三期——黄李超讲物体检测
  6. sqlserver 储存过程 批量更新_大白菜怎么储存过冬,好吃还不烂?掌握方法,其实很简单...
  7. C++的深拷贝与浅拷贝
  8. 15张Vim速查表-帮你提高N倍效率
  9. AS查看Android系统源码
  10. XML和HTML的不同点
  11. 重磅!2021年考研国家线公布!
  12. 计算机组成原理之磁盘
  13. xmind高效处理大图的7个技巧
  14. 不敢去争取,学不会珍惜,却难以忘记——dbGet(三)
  15. will would 七大用法总结
  16. 计算机内码汉字,gbk内码(汉字机内码在线查询)
  17. AXI4 Increase burst / wrap burst/ fix burst 和 narrow transfer
  18. 使用Apple第三方登录Java版
  19. vue知识点详解,Vue之v-prev、vue-virtual-scroll-list、alise、data动态添加数据、v-for中的key值等
  20. 【SVAC】SVAC 2.0安全系统组成

热门文章

  1. Android 中uri.parse()用法
  2. 《零基础入门学习Python》第094讲:Pygame:飞机大战5
  3. bistu新生-1004
  4. ROS中级:Interactive Markers是个啥?
  5. 海思NB-IoT芯片模块,海思处理器介绍
  6. Python中这两个内置函数locals 和globals,你了解吗?
  7. 【SQL进阶教程】第一章 case表达式
  8. 不得不知的大数据四大常识,否则你都不敢说自己在做大数据?
  9. 工具 | Cursor:一个不只是写代码的工具
  10. Tomcat源码解析:Jsp文件的编译、实现