【Java基础】日期操作(返回当前日期&日期比较)
生活随笔
收集整理的這篇文章主要介紹了
【Java基础】日期操作(返回当前日期&日期比较)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在項(xiàng)目中經(jīng)常會用到日期操作,比如日期格式化,返回當(dāng)前日期,日期比較等。
1.返回當(dāng)前時間
1.方式1
public static String dateFormat(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
2.方式2
private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
public static String getCurrentDate(){
LocalDate localDate = LocalDate.now();
return localDate.format(dateFormatter);
}
方式1因?yàn)镾impleDateFormat不是線程安全的,因此做成局部變量,每次格式化都new一個對象,使用完GC回收,這是比較影響性能,推薦方式2,使用DateTimeFormatter,是線程安全的格式化工具。內(nèi)部使用DateTimePrintContext 打印到StringBuilder
2. 日期比較
方式1 /** 耗時 177ms
* date日期和當(dāng)前日期比較
* @param date 如果date 比當(dāng)前日期大 返回true
* @return
*/
public static boolean dateCompare(String date){
LocalDate current = LocalDate.now();
LocalDate comDate = LocalDate.parse(date , dateFormatter);
return comDate.isAfter(current);
}
方式2 //耗時 288ms
public static boolean simpleDateCompare(String date) throws ParseException {
return new SimpleDateFormat("yyyyMMDD").parse(date).after(new Date());
}
方式3 /**
* 耗時 151ms
* @param date
* @return
* @throws ParseException
*/
public static boolean dateStringCompare(String date) throws ParseException {
return date.compareTo(getCurrentDate()) > 0;
}
public static void main(String[] args) {
try {
long start = System.currentTimeMillis();
int i = 0;
while (i < 10000){
System.out.println(dateCompare("20200503"));
i++;
}
System.out.println("time :"+ (System.currentTimeMillis() - start));
} catch (Exception e) {
e.printStackTrace();
}
}
三種比較方式,同樣的樣本數(shù)據(jù)執(zhí)行1萬次,方式3直接字符串比較的性能最優(yōu),151ms,方式1其次,177ms,方式2最差,288ms,推薦方式2,方式3如果日期不是規(guī)則的,比如2019-01-01和2019-1-1這種,比較結(jié)果就會和預(yù)期不符。
歡迎關(guān)注Java流水賬公眾號
總結(jié)
以上是生活随笔為你收集整理的【Java基础】日期操作(返回当前日期&日期比较)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 朋友送礼,国马酱酒什么来历?
- 下一篇: 益雷凳子的高度有哪些?选择时有什么讲究