Java 8中如何将LocalDateTime对象格式化为指定的字符串格式
实现方案
Java 8 可直接使用java.time.format.DateTimeFormatter指定格式模板完成LocalDateTime的格式化,注意指定英文Locale避免非英文环境下输出不符合要求的内容。
完整可运行代码如下:
import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Locale; public class DateFormatDemo { public static void main(String[] args) { String dateUTC = "2021-10-21T10:32:38Z"; Instant i = Instant.parse(dateUTC); LocalDateTime ldt = i.atZone(ZoneId.of("Europe/London")).toLocalDateTime(); // 格式化核心代码 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(" MMM dd yyyy hh:mm:ss a", Locale.US); String output = ldt.format(formatter); System.out.println(output); // 输出结果: Oct 21 2021 11:32:38 AM } }
格式模板各部分含义说明:
MMM:对应英文短写月份,10月会输出为Octdd:两位日期,不足两位自动补前导0yyyy:4位公历年份hh:12小时制的小时数,取值范围01~12mm/ss:分别对应分钟、秒,均为两位格式a:对应12小时制的上下午标识,输出为AM/PM- 模板开头的空格匹配你需求中输出开头的空格,不需要可直接删除模板最前方的空格
- 指定
Locale.US是为了强制输出英文的月份和上下午标识,省略该参数的话中文环境下会输出十月、上午等中文内容,不符合要求
内容的提问来源于stack exchange,提问作者Starbucks Admin
相关产品推荐
相关产品推荐

