概述
最近做的需求有关日期处理的,这里总结一下,直接贴代码
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class DateUtil {
private final static String UTCTimeLen13 = "UTCTimeLen13";
private final static String UTCTimeLen10 = "UTCTimeLen10";
private final static String FORMAT_PATTERN1 = "yyyy-MM-dd HH:mm:ss";
private final static String FORMAT_PATTERN5 = "yyyy-MM-dd HH:mm:ss:SSS";
private final static String FORMAT_PATTERN2 = "yyyyMMddHHmmss";
private final static String FORMAT_PATTERN6 = "yyyyMMddHHmmssSSS";
private final static String FORMAT_PATTERN3 = "YYYY-MM-dd";
private final static String FORMAT_PATTERN4 = "yyyyMMdd";
/**
* @return
* @Description 根据日期格式取当前的日期或时间
* @Param pattern
**/
public static String getPattern(String pattern) {
if (UTCTimeLen13.equals(pattern)) {
return UTCTimeLen13Parse();
}else if (UTCTimeLen10.equals(pattern)) {
return UTCTimeLen10Parse();
} else if (FORMAT_PATTERN1.equals(pattern) || FORMAT_PATTERN2.equals(pattern)) {
return localDateTimeParse(pattern);
} else if (FORMAT_PATTERN3.equals(pattern) || FORMAT_PATTERN4.equals(pattern)) {
return localDateParse(pattern);
}
return "";
}
/**
* @Description 根据日期格式取当前的日期或时间
* @Param num 加减值
* @Param type day or sec
* @Param pattern
* @return
**/
public static String getPattern(int num, String type,String pattern) {
if (UTCTimeLen13.equals(pattern)) {
return UTCTimeLen13Parse(num,type);
}else if (UTCTimeLen10.equals(pattern)) {
return UTCTimeLen10Parse(num,type);
} else if (FORMAT_PATTERN1.equals(pattern) || FORMAT_PATTERN2.equals(pattern)) {
return localDateTimeParse(num,type,pattern);
} else if (FORMAT_PATTERN3.equals(pattern) || FORMAT_PATTERN4.equals(pattern)) {
return localDateParse(num,pattern);
}
return "";
}
/**
* @return
* @Description
* @Param num 加减值
* @Param type day或sec
**/
public static String UTCTimeLen13Parse(int num, String type) {
if ("day".equals(type)) {
return UTCTimeLen13Parse_day(num);
} else if ("sec".equals(type)) {
return UTCTimeLen13Parse_sec(num);
}
return "";
}
/**
* @return Stringe
* @Description UTC 毫秒 13位
**/
public static String UTCTimeLen13Parse() {
return String.valueOf(Instant.now().toEpochMilli());
}
/**
* @return String
* @Description 加减天
* @Param day
**/
public static String UTCTimeLen13Parse_day(int day) {
return String.valueOf(Instant.now().minus(Duration.ofDays(day)).toEpochMilli());
}
/**
* @return String
* @Description 加减秒
* @Param 秒
**/
public static String UTCTimeLen13Parse_sec(int sec) {
return String.valueOf(Instant.now().plus(Duration.ofSeconds(sec)).toEpochMilli());
}
public static String UTCTimeLen10Parse(int num, String type) {
if ("day".equals(type)) {
return UTCTimeLen10Parse_day(num);
} else if ("sec".equals(type)) {
return UTCTimeLen10Parse_sec(num);
}
return "";
}
/**
* @return Stringe
* @Description UTC 秒 10位
**/
public static String UTCTimeLen10Parse() {
return String.valueOf(Instant.now().getEpochSecond());
}
/**
* @return String
* @Description UTC时间加减天
* @Param day
**/
public static String UTCTimeLen10Parse_day(int day) {
return String.valueOf(Instant.now().plus(Duration.ofDays(day)).getEpochSecond());
}
/**
* @return String
* @Description 加减秒
* @Param 秒
**/
public static String UTCTimeLen10Parse_sec(int sec) {
return String.valueOf(Instant.now().plus(Duration.ofSeconds(sec)).getEpochSecond());
}
/**
* @return String
* @Description yyyyMMdd yyyy-MM-dd
* @Param pattern 转化格式
**/
public static String localDateParse(String pattern) {
LocalDate today = LocalDate.now();
return today.format(DateTimeFormatter.ofPattern(pattern));
}
/**
* @return String
* @Description yyyyMMdd yyyy-MM-dd
* @Param num 加减值
* @Param pattern 转化格式
**/
public static String localDateParse(int day, String pattern) {
LocalDate today = LocalDate.now();
LocalDate var1 = today.plusDays(day);
return var1.format(DateTimeFormatter.ofPattern(pattern));
}
/**
* @return String
* @Description
* @Param pattern
**/
public static String localDateTimeParse(String pattern) {
LocalDateTime nowTime = LocalDateTime.now();
return nowTime.format(DateTimeFormatter.ofPattern(pattern));
}
/**
* @return String
* @Description yyyyMMddHHmmss yyyy-MM-dd HH:mm:ss
* @Param num 加减值
* @Param type 天还是秒
* @Param pattern 转化格式
**/
public static String localDateTimeParse(int num, String type, String pattern) {
if ("day".equals(type)) {
return localDateTimeParse_day(num, pattern);
} else if ("sec".equals(type)) {
return localDateTimeParse_sec(num, pattern);
}
return "";
}
/**
* @return String
* @Description 加减天
* @Param day
* @Param pattern
**/
public static String localDateTimeParse_day(int day, String pattern) {
LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime var1 = nowTime.plusDays(day);
return var1.format(DateTimeFormatter.ofPattern(pattern));
}
/**
* @return String
* @Description 加减天
* @Param sec
* @Param pattern
**/
public static String localDateTimeParse_sec(int sec, String pattern) {
LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime var1 = nowTime.plusSeconds(sec);
return var1.format(DateTimeFormatter.ofPattern(pattern));
}
public static String timestampToDateStr(Long milliSecond) {
Instant instant = Instant.ofEpochMilli(milliSecond);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
return localDateTimeFormat(localDateTime, FORMAT_PATTERN3);
}
public static String timestampToDateStr(Long milliSecond, String pattern) {
Instant instant = Instant.ofEpochMilli(milliSecond);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
return localDateTimeFormat(localDateTime, pattern);
}
public static String localDateFormat(LocalDate localDate, String pattern) {
return localDate.format(DateTimeFormatter.ofPattern(pattern));
}
/**
* 将localDateTime 按照一定的格式转换成String
*
* @param localDateTime
* @param pattern
* @return
*/
public static String localDateTimeFormat(LocalDateTime localDateTime, String pattern) {
return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
}
/**
* 将String 按照pattern 转换成LocalDate
*
* @param time
* @param pattern
* @return
*/
public static LocalDate localDateParse(String time, String pattern) {
return LocalDate.parse(time, DateTimeFormatter.ofPattern(pattern));
}
/**
* 将String 按照pattern 转换成LocalDateTime
*
* @param time
* @param pattern
* @return
*/
public static LocalDateTime localDateTimeParse(String time, String pattern) {
return LocalDateTime.parse(time, DateTimeFormatter.ofPattern(pattern));
}
/**
* 将date转换成String
*
* @param date
* @param pattern
* @return
*/
public static String dateFormat(Date date, String pattern) {
return localDateTimeFormat(dateToLocalDateTime(date), pattern);
}
/**
* 将LocalDate 转换成 Date
*
* @param localDate
* @return
*/
public static Date localDateToDate(LocalDate localDate) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDate.atStartOfDay(zoneId);
return Date.from(zdt.toInstant());
}
/**
* 将LocalDateTime 转换成 Date
*
* @param localDateTime
* @return
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
}
/**
* 将 Date 转换成LocalDate
* atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
*
* @param date
* @return
*/
public static LocalDate dateToLocalDate(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDate();
}
/**
* 将 Date 转换成LocalDateTime
* atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
*
* @param date
* @return
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDateTime();
}
/**
* 计算两个LocalDateTime 之间的毫秒数
*
* @param time1
* @param time2
* @return
*/
public static Long minusToMillsLocalDateTime(LocalDateTime time1, LocalDateTime time2) {
return Duration.between(time1, time2).toMillis();
}
/**
* 计算两个LocalTime 之间的毫秒数
*
* @param time1
* @param time2
* @return
*/
public static Long minusToMillsLocalTime(LocalTime time1, LocalTime time2) {
return Duration.between(time1, time2).toMillis();
}
/**
* 计算两个LocalDate 之间的毫秒数
*
* @param time1
* @param time2
* @return
*/
public static Long minusToMillsLocalDate(LocalDate time1, LocalDate time2) {
return Duration.between(time1, time2).toMillis();
}
/**
* 计算两个LocalDate 之间的Period
*
* @param time1
* @param time2
* @return
*/
public static Period periodLocalDate(LocalDate time1, LocalDate time2) {
return Period.between(time1, time2);
}
/**
* 计算两个Date 之间的Period
*
* @param date1
* @param date2
* @return
*/
public static Period periodDate(Date date1, Date date2) {
return periodLocalDate(dateToLocalDate(date1), dateToLocalDate(date2));
}
/**
* 计算两个Date之间的 Period
*
* @param time1
* @param time2
* @return
*/
public static Long minusToMillsDate(Date time1, Date time2) {
return minusToMillsLocalDateTime(dateToLocalDateTime(time1), dateToLocalDateTime(time2));
}
/**
* 时间戳转换成日期格式字符串
*
* @param seconds 精确到秒的字符串
* @param format
* @return
*/
public static String timeStamp2Date(String seconds, String format) {
if (seconds == null || seconds.isEmpty() || seconds.equals("null")) {
return "";
}
if (format == null || format.isEmpty()) {
format = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date(Long.valueOf(seconds + "000")));
}
/**
* 日期格式字符串转换成时间戳
*
* @param date_str 字符串日期
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String date2TimeStamp(String date_str, String format) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return String.valueOf(sdf.parse(date_str).getTime() / 1000);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* 取得当前时间戳(精确到秒)
*
* @return
*/
public static String timeStamp() {
long time = System.currentTimeMillis();
String t = String.valueOf(time / 1000);
return t;
}
}
最后
以上就是兴奋楼房为你收集整理的java工具类(8) -日期操作-DateUtil的全部内容,希望文章能够帮你解决java工具类(8) -日期操作-DateUtil所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复