记录下时间格式化的一个工具类
public static final String DATE_FORMAT_PATTERN_YMD = "yyyy-MM-dd";
public static final String DATE_FORMAT_PATTERN_YMD_HM = "yyyy-MM-dd HH:mm";
public static String getDateStr(Date date, String format) {
if (format == null || format.isEmpty()) {
format = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.format(date);
}
/**
* 时间戳转字符串
*
* @param timestamp 时间戳
* @param isPreciseTime 是否包含时分
* @return 格式化的日期字符串
*/
public static String long2Str(long timestamp, boolean isPreciseTime) {
return long2Str(timestamp, getFormatPattern(isPreciseTime));
}
private static String long2Str(long timestamp, String pattern) {
return new SimpleDateFormat(pattern, Locale.CHINA).format(new Date(timestamp));
}
/**
* 字符串转时间戳
*
* @param dateStr 日期字符串
* @param isPreciseTime 是否包含时分
* @return 时间戳
*/
public static long str2Long(String dateStr, boolean isPreciseTime) {
return str2Long(dateStr, getFormatPattern(isPreciseTime));
}
private static long str2Long(String dateStr, String pattern) {
try {
return new SimpleDateFormat(pattern, Locale.CHINA).parse(dateStr).getTime();
} catch (Throwable ignored) {
}
return 0;
}
private static String getFormatPattern(boolean showSpecificTime) {
if (showSpecificTime) {
return DATE_FORMAT_PATTERN_YMD_HM;
} else {
return DATE_FORMAT_PATTERN_YMD;
}
}
/**
* 计算时间差
*
* @param startTime 起始时间
* @param endTime 结束时间
* @return 相差天数
*/
public static long dateDiffDay(String startTime, String endTime) {
// 按照传入的格式生成一个simpledateformate对象
@SuppressLint("SimpleDateFormat")
SimpleDateFormat sd = new SimpleDateFormat(DATE_FORMAT_PATTERN_YMD);
long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
long diff;
long day = 0;
try {
// 获得两个时间的毫秒时间差异
diff = Objects.requireNonNull(sd.parse(endTime)).getTime()
- Objects.requireNonNull(sd.parse(startTime)).getTime();
day = diff / nd;// 计算差多少天
} catch (ParseException e) {
e.printStackTrace();
}
return day;
}
日常分享记录