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 8的18個常用日期處理Java
- Hive 日期處理Hive
- Java SimpleDateFormat處理日期與字串的轉換JavaORM字串
- JSP 日期處理概述JS
- java日期時間各種變換及處理Java
- Java入門教程五(數字和日期處理)Java
- Redis序列化儲存及日期格式的問題處理EKDIRedis
- Oracle非法日期 處理方案Oracle
- JSON資料傳輸大法第一式——用OADate處理日期格式JSON
- sql server日期格式 sqlserver的日期格式SQLServer
- 日期時間處理包 Carbon
- Java 日期和時間 API:實用技巧與示例 - 輕鬆處理日期和時間JavaAPI
- Calendar類在Java中的應用與日期時間處理Java
- URL及日期等特殊資料格式處理-JSON框架Jackson精解第2篇JSON框架
- Java庫中的LocalDate類JavaLDA
- 關於Python中的日期處理Python
- Pandas中時間和日期處理
- sql server對於日期的處理SQLServer
- Laravel日期時間處理包 CarbonLaravel
- JDBC中Date日期物件的處理JDBC物件
- 字串和日期時間的處理字串
- Vue格式化處理Vue
- Oracle更改預設日期格式 更改會話日期格式Oracle會話
- 全網最全!徹底弄透Java處理GMT/UTC日期時間Java
- 根據兩個日期之間獲取LocalDate日曆列表LDA
- LocalDateTime替代Date操作處理日期時間LDA
- jackson時間格式的處理
- 處理json格式的資料JSON
- 29.Spring Boot中異常處理與REST格式處理Spring BootREST
- Word郵件合併製作上百份薪酬變動通知書及日期格式處理技巧
- Clickhouse SQL日期處理函式及案例分享SQL函式
- 一個日期處理類庫moment.jsJS
- MySQL-日期和資料處理函式MySql函式
- Java處理emojiJava
- JS日期格式化JS
- 日期和時間格式