版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/zeqiao/article/details/82864114
说明:大部分内容都是参考别的文章,这里做整理是为了以后的编程有实用的模板,可以即需即用。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeUtil {
/**
* 默认是 yyyy-MM-dd HH:mm:ss
* 如果要其他格式可以通过 TimeUtil.SHORT_SDF 直接引用
* 也可以自己写 "yyyy-MM-dd HH"
*/
public final static SimpleDateFormat SHORT_SDF = new SimpleDateFormat("yyyy-MM-dd");
public final static SimpleDateFormat LONG_SDF_DEFAULT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 按默认格式转换 millis2String
*/
public static String millis2String(long millis) {
return millis2String(millis, LONG_SDF_DEFAULT);
}
/**
* 按指定格式转换 millis2String
*/
public static String millis2String(long millis, DateFormat format) {
return format.format(new Date(millis));
}
/**
* 按默认格式转换 string2Millis
*/
public static long string2Millis(String time) {
return string2Millis(time, LONG_SDF_DEFAULT);
}
/**
* 按指定格式转换 string2Millis
*/
public static long string2Millis(String time, DateFormat format) {
try {
return format.parse(time).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return -1;
}
/**
* 按默认格式转换 string2Date
*/
public static Date string2Date(String time) {
return string2Date(time, LONG_SDF_DEFAULT);
}
/**
* 按指定格式转换 string2Date
*/
public static Date string2Date(String time, DateFormat format) {
try {
return format.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 按默认格式转换 date2String
*/
public static String date2String(Date date) {
return date2String(date, LONG_SDF_DEFAULT);
}
/**
* 按指定格式转换 string2Date
*/
public static String date2String(Date date, DateFormat format) {
return format.format(date);
}
/**
* date2String
*/
public static long date2Millis(Date date) {
return date.getTime();
}
/**
* millis2Date
*/
public static Date millis2Date(long millis) {
return new Date(millis);
}
/*
* 如果能通过系统API能简单获取,为什么还要写入工具类?!
* 如果写入工具类,以后要改就麻烦了,所以能不写入就不写
*/
/*public static long getCurrentTimeInLong() {
return System.currentTimeMillis();
}*/
/**
* 获取给定天数前的日期
*/
public static String getDateBefore(int days) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -days);
return SHORT_SDF.format(cal.getTime());
}
/**
* 获取给定天数后的日期
*/
public static String getDateAfter(int days) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, days);
return SHORT_SDF.format(cal.getTime());
}
/**
* 如果在1分钟之内发布的显示 "刚刚" 如果在1个小时之内发布的显示 "XX分钟之前" 如果在1天之内发布的显示 "XX小时之前"
* 如果在今年的1天之外的只显示 “月-日”,例如 “05-03” 如果不是今年的显示“年-月-日”,例如 “2000-01-01”
*/
public static String getTranslateTime(String time) {
Date nowTime = new Date();
String currDate = LONG_SDF_DEFAULT.format(nowTime);
long currentMilliseconds = nowTime.getTime();
long timeMilliseconds = 0;
Date date = null;
try {
// 将给定的字符串中的日期提取出来
date = LONG_SDF_DEFAULT.parse(time);
} catch (Exception e) {
e.printStackTrace();
return time;
}
if (date != null) {
timeMilliseconds = date.getTime();
}
long timeDifferent = currentMilliseconds - timeMilliseconds;
if (timeDifferent < 60000) {
return "刚刚";
}
if (timeDifferent < 3600000) {
long longMinute = timeDifferent / 60000;
int minute = (int) (longMinute % 100);
return minute + "分钟之前";
}
long l = 24 * 60 * 60 * 1000; // 每天的毫秒数
if (timeDifferent < l) {
long longHour = timeDifferent / 3600000;
int hour = (int) (longHour % 100);
return hour + "小时之前";
}
if (timeDifferent >= l) {
String currYear = currDate.substring(0, 4);
String year = time.substring(0, 4);
if (!year.equals(currYear)) {
return time.substring(0, 10);
}
return time.substring(5, 10);
}
return time;
}
}
参考文章:
1、Lazy/TimeUtils.java at master · l123456789jy/Lazy · GitHub
2、AndroidUtilCode/TimeUtils.java at master · Blankj/AndroidUtilCode · GitHub
3、https://www.cnblogs.com/realshijing/p/8419421.html
4、https://blog.csdn.net/u012811342/article/details/78853236