文档章节

时间格式化为多少分钟、多少天等等的格式

monee1988
 monee1988
发布于 2016/07/14 14:40
字数 450
阅读 5
收藏 0
点赞 0
评论 0

`

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间格式化为中文移动端格式
 * 
 * [[@author](http://my.oschina.net/arthor)](http://my.oschina.net/codedream) pangweixin
 * [[@date](http://my.oschina.net/u/2504391)](http://my.oschina.net/u/2504391) 2016-07-14
 */
public class RelativeDateFormatUtils {

	private static final long ONE_SECOND = 1000L;
	private static final long ONE_MINITE = ONE_SECOND * 60L;
	private static final long ONE_HOUR = ONE_MINITE * 60L;
	private static final long ONE_DAY = ONE_HOUR * 24L;
	private static final long ONE_MONTH = ONE_DAY * 30L;

	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_YESTERDAY = "昨天";
	private static final String ONE_DAY_AGO = "天前";
	private static final String ONE_MONTH_AGO = "月前";
	private static final String ONE_YEAR_AGO = "年前";

	public static String formatDate(String fmtDate) {

	    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	try {
		Date formateDate = format.parse(fmtDate);
		return formatDate(formateDate);
            } catch (ParseException e) {
       		e.printStackTrace();
     	   }

	    return null;
    }

    public static String formatDate(Date fmtDate) {
	    long intervalTime = new Date().getTime() - fmtDate.getTime();
	    // 如果小于一分钟
	    if (intervalTime < ONE_MINITE) {
	    	long seconds = toSeconds(intervalTime);
	    	return (seconds <= 0 ? "1" : seconds) + ONE_SECOND_AGO;
	    }
	    // 如果小于一小时
	    if (intervalTime < ONE_HOUR) {
	    	long minites = toMinites(intervalTime);
	    	return (minites <= 0 ? "1" : minites) + ONE_MINUTE_AGO;
	    }
	    // 如果小于一小时
	    if (intervalTime < ONE_DAY) {
		    long hours = toHours(intervalTime);
		    return (hours <= 0 ? "1" : hours) + ONE_HOUR_AGO;
	    }
	    // 如果小于两天
	    if (intervalTime < 2 * ONE_DAY) {
	    	return ONE_DAY_YESTERDAY;
	    }
	    // 如果小于一个月
	    if (intervalTime < 30 * ONE_DAY) {
		    long days = toDays(intervalTime);
		    return (days <= 0 ? "1" : days) + ONE_DAY_AGO;
	    }
	    // 如果小于一年
	    if (intervalTime < 12 * ONE_MONTH) {
		    long months = toMonths(intervalTime);
		    return (months <= 0 ? "1" : months) + ONE_MONTH_AGO;
	    } else {
		    long years = toYears(intervalTime);
		    return (years <= 0 ? "1" : years) + ONE_YEAR_AGO;
	    }

    }

    private static long toYears(long intervalTime) {
	    return toMonths(intervalTime) / 12L;
    }

    private static long toMonths(long intervalTime) {
	    return toDays(intervalTime) / 30L;
    }

    private static long toDays(long intervalTime) {
	return toHours(intervalTime) / 24L;
    }

    private static long toHours(long intervalTime) {
	    return toMinites(intervalTime) / 60L;
    }

    private static long toMinites(long intervalTime) {

	    return toSeconds(intervalTime) / 60L;
    }

    private static long toSeconds(long intervalTime) {

	    return intervalTime / ONE_SECOND;
    }

    public static void main(String[] args) throws ParseException {

    	Date currentDate = new Date();

    	Date secondsAgo = new Date(currentDate.getTime() - 12 * RelativeDateFormatUtils.ONE_SECOND);
    	System.out.println(RelativeDateFormatUtils.formatDate(secondsAgo));

		Date minitesAgo = new Date(currentDate.getTime() - 12 * RelativeDateFormatUtils.ONE_MINITE);
    	System.out.println(RelativeDateFormatUtils.formatDate(minitesAgo));

		Date hoursAgo = new Date(currentDate.getTime() - 12 * RelativeDateFormatUtils.ONE_HOUR);
		System.out.println(RelativeDateFormatUtils.formatDate(hoursAgo));

		Date yesterDayAgo = new Date(currentDate.getTime() - 25 * RelativeDateFormatUtils.ONE_HOUR);
		System.out.println(RelativeDateFormatUtils.formatDate(yesterDayAgo));

		Date lostsDaysAgo = new Date(currentDate.getTime() - 15 * RelativeDateFormatUtils.ONE_DAY);
		System.out.println(RelativeDateFormatUtils.formatDate(lostsDaysAgo));

		Date monthsAgo = new Date(currentDate.getTime() - 4 * RelativeDateFormatUtils.ONE_MONTH);
		System.out.println(RelativeDateFormatUtils.formatDate(monthsAgo));

		Date yearsAgo = new Date(currentDate.getTime() - 15 * RelativeDateFormatUtils.ONE_MONTH);
		System.out.println(RelativeDateFormatUtils.formatDate(yearsAgo));
   	}
}

© 著作权归作者所有

共有 人打赏支持
monee1988

monee1988

粉丝 6
博文 6
码字总数 3357
作品 0
朝阳
程序员
Excel中日期时间的计算及表达方式

  在日常工作中,我们可能需要对Excel表格对日期及时间进行整理和计算。一些简单的int型(number、数字)四则运算等我这里就不多解释了,只要读过小学和用过Excel的应该都能理解。今天要说...

JeeChou
2014/02/17
0
0
php格式化时间缀函数

Lee_吉
2017/12/08
0
0
django 过滤器 、日期格式化参数

django1.4 html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012-08-26 16:00:00,但是页面显示的却是Aug. 26, 2012, 4 p.m. 为...

浮云飘飘
2015/12/30
54
0
Java 计算date

public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格式生成一个simpledateformate对象 SimpleDateFormat sd = new SimpleDateFo......

久违了java
2017/08/28
2
0
iOS时间那点事--NSDateFormatter

iOS时间那点事 NSDateFormatter NSDateFormatter是NSFormatter的子类,另,NSFormatter的用途是“将数据在字符串与特定类型的对象之间转换”,目前NSFormatter只有两个子类NSNumberFormatter...

JustBen
2013/08/07
0
1
后台获取日期年、月、日;日期字符串与时间戳相互转化

日期工具类: package com.shangyukeji.icoolcloud.util; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;......

沉淀人生
2017/01/16
0
0
java计算两个日期相差天数

1.public class Test { 2.public void dateDiff(String startTime, String endTime, String format) { 3.//按照传入的格式生成一个simpledateformate对象 4.SimpleDateFormat sd = new Simp......

isolated
2011/04/24
241
0
C#和Sql的时间操作心得(一)

C#和Sql的时间操作心得(一)最近折腾什么周期性工作安排,对时间的操作加强了一点,得出在应用软件中时间真是个注意的地方,像客户要求“2006-03-16 12:00:00” 或者是“2006年03月16日 ...

vga
2016/08/06
14
0
JAVA String.format 方法使用介绍

1.对整数进行格式化:%[index$][标识][最小宽度]转换方式 我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的...

深谷不见幽兰
2014/01/09
0
0
Eclipse的django开发学习笔记(4)--模板(V)

模板 是一个独立的文本文件,同时包含了静态内容和动态标记的逻辑、循环和数据的显示; 模板通常被用来生成HTML,也可以生成log文件E-mail文件,csv文件等任何文本格式; 模板渲染过程: >>...

北方攻城师
2014/07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
9分钟前
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
20分钟前
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
26分钟前
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
28分钟前
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
32分钟前
0
0
毕业5年,我是怎么成为年薪30W的运维工程师

#转载# 我在大学读的是计算机专业,但大学毕业之后,进入到一家私企进行工作,工作的内容类似于网管,会经常的去修电脑,去做水晶头等内容。刚开始工作,也没想太多,最想的是丰富自己的工作...

Py爱好
40分钟前
1
0
大数据基础知识,大数据学习,涉及的知识点

一、什么是大数据 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流 转、多样的数据类型和价值密度低四大特征。...

董黎明
55分钟前
0
0
Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
今天
17
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
今天
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部