深度学习毕设选题推荐:人工智能基于python的鲜花识别
2026/1/6 21:17:47
Java 中日期和时间的格式化主要通过以下两个类实现:
java.text.SimpleDateFormatjava.time.format.DateTimeFormatter两者使用的格式化转换符(pattern letters)基本相同,下面是常用转换符的详细表格。
| 转换符 | 含义 | 示例输出(假设日期:2026-01-06 14:30:25,周二) | 说明 |
|---|---|---|---|
| G | 纪元(Era) | AD | 公元前/后 |
| y | 年(年份) | 2026(yy → 26) | yy 为两位年份 |
| Y | 周所在年(Week year) | 2026 | 很少用 |
| M | 月份 | 01(MM) 1(M) January(MMMM) Jan(MMM) | M 个数决定显示方式 |
| L | 独立月份(Stand-alone month) | 与 M 类似,但用于某些语言的独立形式 | 很少用 |
| d | 月中天(Day of month) | 06(dd) 6(d) | |
| D | 年中天(Day of year) | 006 | 1月1日为001 |
| E | 星期(Day of week) | Tuesday(EEEE) Tue(EEE) | E 个数决定长短 |
| u | 周中天数字(1=周一) | 2 | ISO 标准 |
| a | 上/下午标记 | PM | |
| H | 24小时制小时(0-23) | 14 | |
| k | 24小时制小时(1-24) | 14 | |
| K | 12小时制小时(0-11) | 2 | |
| h | 12小时制小时(1-12) | 2 | |
| m | 分钟 | 30 | |
| s | 秒 | 25 | |
| S | 毫秒 | 000(SSS) 0(S) | S 个数决定位数 |
| z | 时区(通用) | GMT+08:00 | |
| Z | 时区(RFC 822) | +0800 | |
| X | 时区(ISO 8601) | +08 +0800(XX) Z(X) | 推荐使用 |
| ’ | 转义单引号 | 用于输出文字,如 yyyy’年’ | 单引号需成对 ‘’ |
| 模式 | 输出示例 | 说明 |
|---|---|---|
| yyyy-MM-dd | 2026-01-06 | 最常见的日期格式(ISO) |
| yyyy/MM/dd | 2026/01/06 | |
| yyyy年MM月dd日 | 2026年01月06日 | 中文常见 |
| yyyy-MM-dd HH:mm:ss | 2026-01-06 14:30:25 | 完整日期时间(24小时) |
| yyyy-MM-dd hh:mm:ss a | 2026-01-06 02:30:25 PM | 12小时带上下午 |
| EEEE yyyy-MM-dd | Tuesday 2026-01-06 | 带星期 |
| yyyy-MM-dd’T’HH:mm:ss | 2026-01-06T14:30:25 | ISO 8601 基本格式 |
| yyyy-MM-dd HH:mm:ss.SSS | 2026-01-06 14:30:25.000 | 带毫秒 |
| yyyy-MM-dd HH:mm:ss XXX | 2026-01-06 14:30:25 +08:00 | 带时区(推荐) |
1. 使用 SimpleDateFormat(旧 API)
importjava.text.SimpleDateFormat;importjava.util.Date;Datedate=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");Stringstr=sdf.format(date);System.out.println(str);// 输出:2026-01-06 14:30:252. 使用 DateTimeFormatter(新 API,推荐)
importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;LocalDateTimenow=LocalDateTime.now();DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日 EEEE HH:mm");Stringstr=now.format(formatter);System.out.println(str);// 输出:2026年01月06日 星期二 14:30Java 8+ 的DateTimeFormatter还提供了常用预定义格式,无需手动写 pattern:
DateTimeFormatter.ISO_LOCAL_DATE// 2026-01-06DateTimeFormatter.ISO_LOCAL_TIME// 14:30:25DateTimeFormatter.ISO_LOCAL_DATE_TIME// 2026-01-06T14:30:25DateTimeFormatter.ISO_OFFSET_DATE_TIME// 2026-01-06T14:30:25+08:00DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)// 带本地化星期等java.time包(LocalDateTime + DateTimeFormatter),线程安全、API 更清晰。yyyy-MM-dd HH:mm:ss。X或XXX显示时区,避免歧义。yyyy年MM月dd日 HH:mm:ss。掌握这些转换符,就能灵活处理 Java 中几乎所有日期时间格式化需求!