需求背景:
根据接口入参时间格式 yyyy-MM 或者 yyyy-MM-dd获取月份 “1月”。使用
java.time中的 LocalDate.parse 和YearMonth.parse进行处理。
获取入参时间:1月
20241212 16:20
入参 yyyy-MM-dd
要将字符串形式的日期 "2024-01-01" 转换为月份名称(如 "1月"),可以通过 Java 的日期和时间工具类 java.time 实现。以下是一个示例代码:
示例代码
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.util.Locale;
/**
* @author zhizhou 2024/12/9 16:30
*/
public class MonthConversion {
public static void main(String[] args) {
String input = "2024-01-01";
// 解析字符串为 LocalDate
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(input, formatter);
// 获取月份并转换为中文格式
int monthValue = date.getMonthValue(); // 数字月份
String chineseMonth = monthValue + "月"; // 转换为中文格式
// 输出结果
System.out.println(chineseMonth); // 输出:1月
}
}
说明
- 解析日期字符串
使用DateTimeFormatter定义日期格式为"yyyy-MM-dd",并通过LocalDate.parse解析输入字符串为LocalDate对象。 - 提取月份
使用date.getMonthValue()提取数字形式的月份(1表示 1 月)。 - 中文格式化
将数字月份拼接上"月",形成中文格式。
输出结果
对于输入字符串 "2024-01-01",输出结果为:
1月
可选扩展
如果需要显示完整的月份名称(如 “一月” 或 “January”),可以使用以下方法:
显示中文完整月份名称
String fullChineseMonth = date.getMonth().getDisplayName(TextStyle.FULL, Locale.CHINA);
System.out.println(fullChineseMonth); // 输出:一月
显示英文完整月份名称
String fullEnglishMonth = date.getMonth().getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println(fullEnglishMonth); // 输出:January
同理当时间入参格式为yyyy-MM时,如何获取具体月份呢 “1月”
yyyy-MM
要处理这种情况,可以使用 YearMonth 类,它是 java.time 包的一部分,专门用于表示只有年月的信息。以下是正确的实现方法:
示例代码
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
/**
* @author zhizhou 2024/12/9 16:30
*/
public class MonthConversion {
public static void main(String[] args) {
String input = "2024-01";
// 使用 YearMonth 解析字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
YearMonth yearMonth = YearMonth.parse(input, formatter);
// 获取月份数字并转换为中文格式
int monthValue = yearMonth.getMonthValue(); // 提取月份数字
String chineseMonth = monthValue + "月"; // 拼接为中文格式
// 输出结果
System.out.println(chineseMonth); // 输出:1月
}
}
说明
- 使用
YearMonth
YearMonth是一个只包含年份和月份的类,适合处理"yyyy-MM"格式的日期。 - 定义日期格式
使用DateTimeFormatter.ofPattern("yyyy-MM"),与输入格式匹配。 - 提取月份
调用yearMonth.getMonthValue()获取月份的数值形式(1表示 1 月)。 - 格式化为中文月份
拼接"月",生成中文表示。
输出结果
对于输入字符串 "2024-01",输出为:
1月
扩展功能
如果需要更丰富的月份名称:
-
完整中文月份名称(如 “一月”):
String fullChineseMonth = yearMonth.getMonth().getDisplayName(java.time.format.TextStyle.FULL, java.util.Locale.CHINA); System.out.println(fullChineseMonth); // 输出:一月 -
英文月份名称(如 “January”):
String fullEnglishMonth = yearMonth.getMonth().getDisplayName(java.time.format.TextStyle.FULL, java.util.Locale.ENGLISH); System.out.println(fullEnglishMonth); // 输出:January
时间处理在java中确实是个抹不开的东西,搞来搞去的。

1万+

被折叠的 条评论
为什么被折叠?



