目錄
一、String和Date互轉(zhuǎn)
1.1 String時(shí)間轉(zhuǎn)為Date
1.2 Date轉(zhuǎn)為String
二、String和Calendar互轉(zhuǎn)
2.1 String時(shí)間轉(zhuǎn)為Calendar
2.2 Calendar轉(zhuǎn)為String
三、String和LocalDate(LocalDateTime)互轉(zhuǎn)
3.1 String時(shí)間轉(zhuǎn)為LocalDate(LocalDateTime)
3.2 LocalDate(LocalDateTime)轉(zhuǎn)為String
四、Date和Calendar互轉(zhuǎn)
4.1 Date轉(zhuǎn)為Calendar
4.2 Calendar轉(zhuǎn)為Date
五、Date和LocalDate(LocalDateTime)互轉(zhuǎn)
5.1 Date轉(zhuǎn)為LocalDate(LocalDateTime)
5.2 LocalDate(LocalDateTime)轉(zhuǎn)為Date
六、Calendar和LocalDat(LocalDateTime)互轉(zhuǎn)
6.1 Calendar轉(zhuǎn)為LocalDate(LocalDateTime)
6.2 LocalDat(LocalDateTime)轉(zhuǎn)為Calendar
七、LocalDate和LocalDateTime互轉(zhuǎn)
7.1 LocalDate轉(zhuǎn)LocalDateTime
7.2 LocalDateTime轉(zhuǎn)LocalDate
一、String和Date互轉(zhuǎn)
1.1 String時(shí)間轉(zhuǎn)為Date
private Date stringToDate(String dateStr, String pattern) {
try {
return new SimpleDateFormat(pattern).parse(dateStr);
} catch (Throwable ignore) {
// TODO 時(shí)間轉(zhuǎn)換異常日期
}
return null;
}
調(diào)方法 stringToDate(Sring, pattern):
System.out.println(stringToDate("2023-11", "yyyy-MM"));
System.out.println(stringToDate("2023-11-11", "yyyy-MM-dd"));
System.out.println(stringToDate("2023-11-11 11", "yyyy-MM-dd hh"));
System.out.println(stringToDate("2023-11-11 11:11", "yyyy-MM-dd hh:mm"));
System.out.println(stringToDate("2023-11-11 11:11:11", "yyyy-MM-dd hh:mm:ss"));
注:第一個(gè)參數(shù)的格式必須與第二個(gè)參數(shù)的模式一致才能正常轉(zhuǎn)換
運(yùn)行結(jié)果:
Wed Nov 01 00:00:00 CST 2023
Sat Nov 11 00:00:00 CST 2023
Sat Nov 11 11:00:00 CST 2023
Sat Nov 11 11:11:00 CST 2023
Sat Nov 11 11:11:11 CST 2023
1.2 Date轉(zhuǎn)為String
private String dateToString(Date date, String pattern) {
return new SimpleDateFormat(pattern).format(date);
}
調(diào)方法dateToString(Date, pattern),可根據(jù)第二個(gè)參數(shù)模式來獲取對應(yīng)模式的時(shí)間對應(yīng)字符串格式:
System.out.println(dateToString(new Date(), "yyyy"));
System.out.println(dateToString(new Date(), "yyyy-MM"));
System.out.println(dateToString(new Date(), "yyyy-MM-dd"));
System.out.println(dateToString(new Date(), "yyyy-MM-dd hh"));
System.out.println(dateToString(new Date(), "yyyy-MM-dd hh:mm"));
System.out.println(dateToString(new Date(), "yyyy-MM-dd hh:mm:ss"));
運(yùn)行結(jié)果:
2023
2023-08
2023-08-01
2023-08-01 11
2023-08-01 11:40
2023-08-01 11:40:26
二、String和Calendar互轉(zhuǎn)
2.1 String時(shí)間轉(zhuǎn)為Calendar
private Calendar stringToCalendar(String dateStr, String pattern) {
try {
SimpleDateFormat sdf= new SimpleDateFormat(pattern);
Date date = sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
} catch (Throwable ignore) {
// TODO 時(shí)間字符串轉(zhuǎn)Calendar異常
}
return null;
}
調(diào)用方法stringToCalendar(String, pattern):
Calendar calendar0 = stringToCalendar("2023-08-05", "yyyy");
Calendar calendar1 = stringToCalendar("2023-08-05", "yyyy-MM");
Calendar calendar2 = stringToCalendar("2023-08-05 11:11:11", "yyyy-MM-dd hh:mm:ss");
System.out.println(calendar0.getTime());
System.out.println(calendar1.getTime());
System.out.println(calendar2.getTime());
注:第一個(gè)參數(shù)的格式與第二個(gè)參數(shù)的模式不一定要求強(qiáng)一致,但若String只有年月日,模式不能有時(shí)分秒
運(yùn)行結(jié)果:
Sun Jan 01 00:00:00 CST 2023
Tue Aug 01 00:00:00 CST 2023
Sat Aug 05 11:11:11 CST 2023
說明:根據(jù)日期模式格式化時(shí)間對象時(shí),若模式只有年月則日為1號,若模式?jīng)]有年份則月日為01月01日,模式?jīng)]有時(shí)/分/秒 則為0
2.2 Calendar轉(zhuǎn)為String
private String calendarToString(Calendar calendar, final String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(calendar.getTime());
}
調(diào)用方法calendarToString(Calendar, pattern),第二個(gè)參數(shù)為輸出的格式模式:
System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM"));
System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd"));
System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd hh"));
System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd hh:mm"));
System.out.println(calendarToString(Calendar.getInstance(), "yyyy-MM-dd hh:mm:ss"));
運(yùn)行結(jié)果:
2023-08
2023-08-01
2023-08-01 11
2023-08-01 11:59
2023-08-01 11:59:13
三、String和LocalDate(LocalDateTime)互轉(zhuǎn)
3.1 String時(shí)間轉(zhuǎn)為LocalDate(LocalDateTime)
private LocalDate stringToLocalDate(String dateStr, String pattern) {
DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern);
return LocalDate.parse(dateStr, df);
}
private LocalDateTime stringToLocalDateTime(String dateStr, String pattern) {
DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern);
return LocalDateTime.parse(dateStr, df);
}
調(diào)方法 stringToLocalDate(Sring, pattern),第二個(gè)參數(shù)模式必須有年月日,第一個(gè)參數(shù)的格式必須與第二個(gè)參數(shù)的模式一致才能正常轉(zhuǎn)換
System.out.println(stringToLocalDate("2023-08-01", "yyyy-MM-dd"));
System.out.println(stringToLocalDate("2023-08-02 11", "yyyy-MM-dd hh"));
System.out.println(stringToLocalDate("2023-08-02 11:12", "yyyy-MM-dd hh:mm"));
System.out.println(stringToLocalDate("2023-08-02 11:12:13", "yyyy-MM-dd hh:mm:ss"));
System.out.println(stringToLocalDateTime("2023-08-02 11:12:13", "yyyy-MM-dd hh:mm:ss"));
運(yùn)行結(jié)果:
2023-08-01
2023-08-02
2023-08-02
2023-08-02
java.time.format.DateTimeParseException: Text '2023-08-02 11:12:13' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MinuteOfHour=12, SecondOfMinute=13, MilliOfSecond=0, MicroOfSecond=0, HourOfAmPm=11, NanoOfSecond=0},ISO resolved to 2023-08-02 of type java.time.format.Parsed
注:報(bào)錯(cuò)的原因是stringToLocalDateTime方法第二個(gè)參數(shù)模式的小時(shí)hh 采用12小時(shí),反解析時(shí)不知道上午還是下午,改成24小時(shí)制“yyyy-MM-dd?HH:mm:ss”即可。
3.2 LocalDate(LocalDateTime)轉(zhuǎn)為String
private String localDateToString(LocalDate localDate, String pattern) {
return localDate.format(DateTimeFormatter.ofPattern(pattern));
}
private String localDateToString(LocalDateTime localDateTime, String pattern) {
return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
}
只需要年月日用LocalDate,若需要時(shí)分秒用LocalDateTime
調(diào)方法localDateToString:
System.out.println(localDateToString(LocalDate.now(), "yyyy"));
System.out.println(localDateToString(LocalDate.now(), "yyyy-MM"));
System.out.println(localDateToString(LocalDate.now(), "yyyy-MM-dd"));
System.out.println(localDateToString(LocalDateTime.now(), "yyyy-MM-dd HH"));
System.out.println(localDateToString(LocalDateTime.now(), "yyyy-MM-dd HH:mm"));
System.out.println(localDateToString(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss"));
運(yùn)行結(jié)果:
2023
2023-08
2023-08-01
2023-08-01 12
2023-08-01 12:03
2023-08-01 12:03:44
四、Date和Calendar互轉(zhuǎn)
4.1 Date轉(zhuǎn)為Calendar
private Calendar dateToCalendar(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date );
return cal;
}
調(diào)方法dateToCalendar(Date):
Calendar calendar = dateToCalendar(new Date());
System.out.println(calendar.getTime());
運(yùn)行結(jié)果:
Tue Aug 01 12:08:41 CST 2023
4.2 Calendar轉(zhuǎn)為Date
private Date calendarToDate(Calendar calendar) { return calendar.getTime(); }
調(diào)方法calendarToDate(Calendar):
System.out.println(calendarToDate(Calendar.getInstance()));
運(yùn)行結(jié)果:
Tue Aug 01 12:10:21 CST 2023
五、Date和LocalDate(LocalDateTime)互轉(zhuǎn)
5.1 Date轉(zhuǎn)為LocalDate(LocalDateTime)
private LocalDate dateToLocalDate(Date date) {
// 將java.util.Date轉(zhuǎn)換為ZonedDateTime。
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = instant.atZone(zoneId);
// 使用它的toLocalDate()方法從ZonedDateTime獲取LocalDate
return zonedDateTime.toLocalDate();
}
private LocalDateTime dateToLocalDateTime(Date date) {
// 將Date對象轉(zhuǎn)換成為Instant對象
Instant instant = date.toInstant();
// 將瞬時(shí)對象轉(zhuǎn)換成為LocalDateTime對象
return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
}
調(diào)dateToLocalDate(Date),轉(zhuǎn)LocalDateTime調(diào)dateToLocalDateTime(Date):
System.out.println(dateToLocalDate(new Date()));
System.out.println(dateToLocalDateTime(new Date()));
運(yùn)行結(jié)果:
2023-08-01
2023-08-01T12:22:39.742
5.2 LocalDate(LocalDateTime)轉(zhuǎn)為Date
private Date localDateToDate(LocalDate localDate) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId);
// 將時(shí)區(qū)對象轉(zhuǎn)換成為瞬時(shí)對象
Instant instant2 = zonedDateTime.toInstant();
// 通過Date提供的靜態(tài)方法將瞬時(shí)對象轉(zhuǎn)換為Date對象
return Date.from(instant2);
}
private Date localDateTimeToDate(LocalDateTime localDateTime) {
// 將LocalDateTime對象轉(zhuǎn)換成為時(shí)區(qū)對象
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
// 將時(shí)區(qū)對象轉(zhuǎn)換成為瞬時(shí)對象
Instant instant2 = zonedDateTime.toInstant();
// 通過Date提供的靜態(tài)方法將瞬時(shí)對象轉(zhuǎn)換為Date對象
return Date.from(instant2);
}
LocalDateTime調(diào)localDateTimeToDate(LocalDateTime ),LocalDate調(diào)localDateToDate(LocalDate ):
System.out.println(localDateToDate(LocalDate.now()));
System.out.println(localDateTimeToDate(LocalDateTime.now()));
運(yùn)行結(jié)果:
Tue Aug 01 00:00:00 CST 2023
Tue Aug 01 12:25:06 CST 2023
六、Calendar和LocalDat(LocalDateTime)互轉(zhuǎn)
6.1 Calendar轉(zhuǎn)為LocalDate(LocalDateTime)
調(diào)4.2由Calendar轉(zhuǎn)為Date,再調(diào)5.1轉(zhuǎn)為LocalDate/LocalDateTime:
System.out.println(dateToLocalDate(calendarToDate(Calendar.getInstance())));
System.out.println(dateToLocalDateTime(calendarToDate(Calendar.getInstance())));
運(yùn)行結(jié)果:
2023-08-01
2023-08-01T12:33:01.151
6.2 LocalDat(LocalDateTime)轉(zhuǎn)為Calendar
調(diào)5.2由LocalDate轉(zhuǎn)為Date,再調(diào)4.1轉(zhuǎn)為Calendar:
Calendar calendar1 = dateToCalendar(localDateToDate(LocalDate.now()));
Calendar calendar2 = dateToCalendar(localDateTimeToDate(LocalDateTime.now()));
System.out.println(calendar1.getTime());
System.out.println(calendar2.getTime());
運(yùn)行結(jié)果:
Tue Aug 01 00:00:00 CST 2023
Tue Aug 01 12:35:47 CST 2023
七、LocalDate和LocalDateTime互轉(zhuǎn)
7.1 LocalDate轉(zhuǎn)LocalDateTime
private LocalDateTime localDateToLocalDateTime(LocalDate localDate) {
return dateToLocalDateTime(localDateToDate(localDate));
}
7.2 LocalDateTime轉(zhuǎn)LocalDate
private LocalDate localDateTimeToLocalDate(LocalDateTime localDateTime) {
return localDateTime.toLocalDate();
}
調(diào)7.1和7.2:
System.out.println(localDateToLocalDateTime(LocalDate.now()));
System.out.println(localDateTimeToLocalDate(LocalDateTime.now()));
運(yùn)行結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-741501.html
2023-08-01T00:00
2023-08-01
注:String為java.lang.String,Date為java.util.Date,Calendar為java.util.Calendar,LocalDate為java.time.LocalDate,LocalDateTime為java.time.LocalDateTime。文章來源地址http://www.zghlxwxcb.cn/news/detail-741501.html
到了這里,關(guān)于Java String、Date、Calendar、LocalDate和LocalDateTime互轉(zhuǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!