java localdate日期格式處理
引言
作為一種業務場景,我們經常會從前端取到日期資料,針對前端回傳的資料再到資料庫進行取值。那麼針對前端傳回來的日期資料可能有幾種情況,我們也要做對應的處理。
日期的表現形式有很多種,在java裡我們可以把類似於20180630
這一種看成是一種int
的,也可以看成是string
型別的,具體則要看我們的業務需求,如果是資料傳過來不用進行例如日期變化之類的處理我建議存int
型別。如果是要對日期進行處理的我建議還是存string
型別。
除了上面說的20180630
型別,我們實際上還會碰到類似於201806
這種型別。這種只有年月因為它對日是沒有要求的所以我有兩種思路:1.對其進行拼接組裝成類似於20180601
這樣的格式再進行處理。2.建立新的實體類DateEntity
,包含3個欄位分別代表年月日,通過getter/setter方法對欄位賦值。
除了上面說的型別實際上還可能會有2018-06-30
或者是2018/06/30
這些常見的格式。從前端傳來這些格式一定是string
型別進行處理。
還有一種是時間戳格式long
型別。
本文不使用棄用的Date
相關日期類進行處理,而是使用java8的LocalDate
對時間進行處理。所以針對大部分的傳參都會轉換成LocalDate
相關的類庫進行處理。
年月日/年月處理
這裡先解決傳入年月日和年月兩種格式的處理問題。假設傳的是int型別。
方案一:
/**
* date : 20180105
*/
public static LocalDate convertWithDay(int date){
return LocalDate.parse(String.valueOf(date),DateTimeFormatter.BASIC_ISO_DATE);
}
/**
* date : 201801
*/
public static LocalDate convertWithoutDay(int date){
return LocalDate.parse(new StringBuilder().append(String.valueOf(date)).append("01").toString(),DateTimeFormatter.BASIC_ISO_DATE);
}
方案二:
public class DateEntity {
private int year;
private int month;
private int day;
//省略getter/setter方法;
}
/**
* date : 20180105
*/
public static DateEntity convertWithDay(int date){
DateEntity dateEntity = new DateEntity();
int year = date/10000; // 2018
int month = (date - year*10000)/100; // 01
int day = date - year*10000 - month*100;
dateEntity.setYear(year);
dateEntity.setMonth(month);
dateEntity.setDay(day);
return dateEntity;
}
/**
* date : 201801
*/
public static DateEntity convertWithoutDay(int date){
DateEntity dateEntity = new DateEntity();
int year = date/100; // 2018
int month = date - year*100; // 01
dateEntity.setYear(year);
dateEntity.setMonth(month);
return dateEntity;
}
對於方案1的缺點在於引入的這個01不太合理,目的只是為了湊成那種格式。但是優點也顯而易見,程式碼簡單,而且返回的LocalDate
非常便於二次運算。
對於方案2的優點在於它比較合理,如果沒有傳日就不設定日的欄位這種處理比較推薦。但是缺點就是太麻煩了(上面的優點就是它的缺點)。
相關文章
- 【Java】全域性日期處理,包含LocalDate, LocalDateTime, DateJavaLDA
- LocalDate,LocalDateTime和處理時間、日期工具類LDA
- java(日期處理)Java
- Java 8的18個常用日期處理Java
- Scala日期處理
- JavaUtils - 日期處理Java
- Hive 日期處理Hive
- Java SimpleDateFormat處理日期與字串的轉換JavaORM字串
- 【Util】java處理日期時間相加減大全Java
- java Date日期類和SimpleDateFormat日期類格式JavaORM
- jstl處理日期JS
- Java入門教程五(數字和日期處理)Java
- java日期時間各種變換及處理Java
- Redis序列化儲存及日期格式的問題處理EKDIRedis
- Java日期格式教程書目錄Java
- java日期格式化輸出Java
- JSP 日期處理概述JS
- Oracle非法日期 處理方案Oracle
- 在oracle中處理日期Oracle
- oracle日期處理集錦Oracle
- Java庫中的LocalDate類JavaLDA
- sql server日期格式 sqlserver的日期格式SQLServer
- Pandas中時間和日期處理
- 日期時間處理包 Carbon
- window bat批處理date_time日期時間格式設定使用小結BAT
- Java 日期和時間 API:實用技巧與示例 - 輕鬆處理日期和時間JavaAPI
- Vue格式化處理Vue
- Calendar類在Java中的應用與日期時間處理Java
- JSON資料傳輸大法第一式——用OADate處理日期格式JSON
- 根據兩個日期之間獲取LocalDate日曆列表LDA
- oracle 日期格式Oracle
- sql server對於日期的處理SQLServer
- 字串和日期時間的處理字串
- JDBC中Date日期物件的處理JDBC物件
- Laravel日期時間處理包 CarbonLaravel
- 幾個SQL 日期處理函式SQL函式
- Oracle更改預設日期格式 更改會話日期格式Oracle會話
- java取得昨天和明天的格式化日期Java