java高仿微博日期显示格式化,日期辅助工具类

原文:java高仿微博日期显示格式化,日期辅助工具类

源代码下载地址:http://www.zuidaima.com/share/1550463377902592.htm

仿新浪微博日期格式化工具类:

例如:

1. 刚刚

2. xx分钟前

3. hh小时前

4. 今天 HH:mm

5. 昨天 HH:mm

6. 前天 HH:mm

7. 上个月 yyyy-MM-dd HH:mm

8. 去年 yyyy-MM-dd HH:mm

9. 前年 yyyy-MM-dd HH:mm

今天写的代码,结构还很粗糙,只是实现了功能而已。下次重构下支持格式描述符之后再发上来

package com.zuidaima.haohui.common.utils;

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

/**
 *
 * import java.text.SimpleDateFormat;
 *@author www.zuidaima.com
**/
import java.util.Calendar;
public class Super2{
 public static void main(String args[]){
  Calendar cal = Calendar.getInstance();
  //n为推迟的周数,1本周,-1向前推迟一周,2下周,依次类推
  int n = 2;
  String monday;
  cal.add(Calendar.DATE, n*7);
  //想周几,这里就传几Calendar.MONDAY(TUESDAY...)
  cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
  monday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
  System.out.println(monday);
 }
}
 * @project baidamei
 * @author cevencheng <[email protected]>
 * @create 2012-11-10 上午1:12:21
 */
public class DateUtil {
	public static void main(String[] args) throws ParseException {
//		SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		java.util.Date begin = dfs.parse("2004-01-02 11:30:24");
//		java.util.Date end = dfs.parse("2004-03-26 13:31:40");
//		long between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒
//
//		long day = between / (24 * 3600);
//		long hour = between % (24 * 3600) / 3600;
//		long minute = between % 3600 / 60;
//		long second = between % 60 / 60;
//		System.out.println("" + day + "天" + hour + "小时" + minute + "分" + second + "秒");
//		System.out.println(begin.getTime());
//
//		System.out.println(getDaysBeforeNow(new Date()));

		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date date = df.parse("2012-11-18");
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE, -7);
		cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //上周一
		System.out.println(df.format(cal.getTime()));
		cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); //周末
		System.out.println(df.format(cal.getTime()));

	}

	/**
	 * 时间间隔计算
	 *
	 */
	public static String getDaysBeforeNow(Date date) {
		long sysTime = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
		long ymdhms = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmss").format(date));
		String strYear = "年前";
		String strMonth = "月前";
		String strDay = "天前";
		String strHour = "小时前";
		String strMinute = "分钟前";
		try {
			if (ymdhms == 0) {
				return "";
			}
			long between = (sysTime / 10000000000L) - (ymdhms / 10000000000L);
			if (between > 0) {
				return between + strYear;
			}
			between = (sysTime / 100000000L) - (ymdhms / 100000000L);
			if (between > 0) {
				return between + strMonth;
			}
			between = (sysTime / 1000000L) - (ymdhms / 1000000L);
			if (between > 0) {
				return between + strDay;
			}
			between = (sysTime / 10000) - (ymdhms / 10000);
			if (between > 0) {
				return between + strHour;
			}
			between = (sysTime / 100) - (ymdhms / 100);
			if (between > 0) {
				return between + strMinute;
			}
			return "1" + strMinute;
		} catch (Exception e) {
			return "";
		}
	}
}
时间: 2024-10-26 22:08:40

java高仿微博日期显示格式化,日期辅助工具类的相关文章

synchronized/java.util.concurrent.locks.Loc/如何格式化日期/将字符“12345”转换成long型

1.简述synchronized和java.util.concurrent.locks.Lock的异同?解答:主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放. 2.如何格式化日期解答:Date now=new Date();SimpleDateFormat sdf=new SimpleDate

分享自己写的JS版日期格式化和解析工具类,绝对好用!

前言 本来想模仿Java里面的SimpleDateFormat()对象的,但是感觉这样用起来不方便,所以还是直接写成单独的方法算了. 原文链接 日期格式化 使用说明 formatDate(date, fmt),其中fmt支持的格式有: y(年) M(月) d(日) q(季度) w(星期) H(24小时制的小时) h(12小时制的小时) m(分钟) s(秒) S(毫秒) 另外,字符的个数决定输出字符的长度,如,yy输出16,yyyy输出2016,ww输出周五,www输出星期五,等等. 代码 完整代

Java并发(基础知识)——显示锁和同步工具类

显示锁                                                                                     Lock接口是Java 5.0新增的接口,该接口的定义如下: public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long

Android消息机制——时钟显示和异步处理工具类(AsyncTask)

1. 时钟显示 定义布局文件——activity_my_analog_clock_thread_demo.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/to

Java线程与并发编程实践----额外的并发工具类

一.并发集合 java.util包下提供了很多的集合类,如ArrayList.TreeSet.HashMap,但是这些 集合都是非线程安全的,并且对于单列集合的迭代器,采用的是快速失败机制,当正在迭代 遍历的集合被其它线程修改时,便会抛出 java.util.ConcurrentModificationException. 这显然对于多线程操作的集合是十分不方便的,但早Colections这个工具类中有方法可以返回 线程安全的集合,然而这种集合对于高并发环境,性能十分低下. 于是,java.ut

Java使用Zxing生成、解析二维码工具类

Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2).二维码的生成需要借助MatrixToImageWriter类,该类是由Google提供的; package com.qlwb.business.util; //导入省略... /** * 二维码工具类 * */ public class MatrixToLogoImageWriter { priva

JAVA学习第四十四课 — 集合框架工具类(二)

Collections操控集合的工具类,Arrays操控数组的工具类 Arrays中方法大多是重载 重点掌握asList();将数组转为集合 static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表. import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { String[]

高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上传下载. 这两种感觉都有利弊. 第一种实现了代码复用,但是配置信息全需要写在类中,维护比较复杂. 第二种如果是spring框架,可以通过propertis文件,动态的注入配置信息,但是又不能代码复用. 所以我打算自己实现一个工具类,来把上面的两种优点进行整合.顺便把一些上传过程中一些常见的问题也给解

orcale 日期显示格式化

SQL> select * 2 from emp 3 where hiredate='1987-11-17'; where hiredate='1987-11-17' * 第 3 行出现错误: ORA-01861: 文字与格式字符串不匹配 SQL> --查看当前日期格式 SQL> select sysdate from dual; SYSDATE -------------- 15-8月 -11 已选择 1 行. SQL> --查询系统设置 SQL> select * fro