LocalDate/LocalDateTime与String的互相转换示例

朱雀 2023-06-11 11:24 68阅读 0赞

转换示例

LocalDate转String

代码

  1. @Test
  2. public void LocalDateString() {
  3. LocalDate date = LocalDate.now();
  4. DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  5. String dateStr = date.format(fmt);
  6. System.out.println("LocalDate转String:"+dateStr);
  7. }

控制台输出结果

  1. LocalDateString:2017-11-21

LocalDateTime转String

代码

  1. @Test
  2. public void LocalDateTimeString() {
  3. LocalDateTime dateTime = LocalDateTime.now();
  4. //使用预定义实例来转换
  5. DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE;
  6. String dateStr = dateTime.format(fmt);
  7. System.out.println("LocalDateTime转String[预定义]:"+dateStr);
  8. //使用pattern来转换
  9. //12小时制与24小时制输出由hh的大小写决定
  10. DateTimeFormatter fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss:SSS");
  11. String dateStr12 = dateTime.format(fmt12);
  12. System.out.println("LocalDateTime转String[pattern](12小时制):"+dateStr12);
  13. DateTimeFormatter fmt24 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
  14. String dateStr24 = dateTime.format(fmt24);
  15. System.out.println("LocalDateTime转String[pattern](24小时制):"+dateStr24);
  16. //如果想要给12小时制时间加上am/pm,这样子做:
  17. fmt12 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss:SSS a");
  18. dateStr12 = dateTime.format(fmt12);
  19. System.out.println("LocalDateTime转String[pattern](12小时制带am/pm):"+dateStr12);
  20. }

控制台输出结果

  1. LocalDateTimeString[预定义]:2017-11-21
  2. LocalDateTimeString[pattern](12小时制):2017-11-21 02:51:51:550
  3. LocalDateTimeString[pattern](24小时制):2017-11-21 14:51:51:550
  4. LocalDateTimeString[pattern](12小时制带am/pm):2017-11-21 02:51:51:550 下午

String转LocalDate和LocalDateTime

代码

  1. @Test
  2. public void StringLocalDateLocalDateTime(){
  3. String str = "2017-11-21 14:41:06:612";
  4. DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
  5. LocalDate date = LocalDate.parse(str, fmt);
  6. LocalDateTime time = LocalDateTime.parse(str, fmt);
  7. System.out.println("date:"+date);
  8. System.out.println("time:"+time);
  9. }

控制台输出结果

  1. date:2017-11-21
  2. time:2017-11-21T14:41:06.612

DateTimeFormatter详解

DateTimeFormatter我们更多的是直接使用pattern来做转换,
其实这个类本身已经提供了一些预定义好的实例供我们使用。
下面把两者的具体释义和示例都贴出来供大家参考。

预定义

  1. Predefined Formatters Formatter Description Example
  2. ---------------------- ---------------------- ------------
  3. ofLocalizedDate(dateStyle) Formatter with date style from the locale '2011-12-03'
  4. ofLocalizedTime(timeStyle) Formatter with time style from the locale '10:15:30'
  5. ofLocalizedDateTime(dateTimeStyle) Formatter with a style for date and time from the locale '3 Jun 2008 11:05:30'
  6. ofLocalizedDateTime(dateStyle,timeStyle) Formatter with date and time styles from the locale '3 Jun 2008 11:05'
  7. BASIC_ISO_DATE Basic ISO date '20111203'
  8. ISO_LOCAL_DATE ISO Local Date '2011-12-03'
  9. ISO_OFFSET_DATE ISO Date with offset '2011-12-03+01:00'
  10. ISO_DATE ISO Date with or without offset '2011-12-03+01:00'; '2011-12-03'
  11. ISO_LOCAL_TIME Time without offset '10:15:30'
  12. ISO_OFFSET_TIME Time with offset '10:15:30+01:00'
  13. ISO_TIME Time with or without offset '10:15:30+01:00'; '10:15:30'
  14. ISO_LOCAL_DATE_TIME ISO Local Date and Time '2011-12-03T10:15:30'
  15. ISO_OFFSET_DATE_TIME Date Time with Offset '2011-12-03T10:15:30+01:00'
  16. ISO_ZONED_DATE_TIME Zoned Date Time '2011-12-03T10:15:30+01:00[Europe/Paris]'
  17. ISO_DATE_TIME Date and time with ZoneId '2011-12-03T10:15:30+01:00[Europe/Paris]'
  18. ISO_ORDINAL_DATE Year and day of year '2012-337'
  19. ISO_WEEK_DATE Year and Week '2012-W48-6'
  20. ISO_INSTANT Date and Time of an Instant '2011-12-03T10:15:30Z'
  21. RFC_1123_DATE_TIME RFC 1123 / RFC 822 'Tue, 3 Jun 2008 11:05:30 GMT'

Pattern

  1. All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. The following pattern letters are defined:
  2. Symbol Meaning Presentation Examples
  3. ------ ------- ------------ -------
  4. G era text AD; Anno Domini; A
  5. u year year 2004; 04
  6. y year-of-era year 2004; 04
  7. D day-of-year number 189
  8. M/L month-of-year number/text 7; 07; Jul; July; J
  9. d day-of-month number 10
  10. Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
  11. Y week-based-year year 1996; 96
  12. w week-of-week-based-year number 27
  13. W week-of-month number 4
  14. E day-of-week text Tue; Tuesday; T
  15. e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
  16. F week-of-month number 3
  17. a am-pm-of-day text PM
  18. h clock-hour-of-am-pm (1-12) number 12
  19. K hour-of-am-pm (0-11) number 0
  20. k clock-hour-of-am-pm (1-24) number 0
  21. H hour-of-day (0-23) number 0
  22. m minute-of-hour number 30
  23. s second-of-minute number 55
  24. S fraction-of-second fraction 978
  25. A milli-of-day number 1234
  26. n nano-of-second number 987654321
  27. N nano-of-day number 1234000000
  28. V time-zone ID zone-id America/Los_Angeles; Z; -08:30
  29. z time-zone name zone-name Pacific Standard Time; PST
  30. O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
  31. X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
  32. x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
  33. Z zone-offset offset-Z +0000; -0800; -08:00;
  34. p pad next pad modifier 1
  35. ' escape for text delimiter
  36. '' single quote literal '
  37. [ optional section start
  38. ] optional section end
  39. # reserved for future use
  40. { reserved for future use
  41. } reserved for future use

前面LocalDateTime转String的部分其实已经涉及到了一些DateTimeFormatter的不同使用方法,这里就不再重复提供demo啦。

发表评论

表情:
评论列表 (有 0 条评论,68人围观)

还没有评论,来说两句吧...

相关阅读