我必须将日期字符串(例如"2015年10月")解析为日期.所以问题是:我如何解析MMMM yyyy格式的日期?如果新的Date对象是给定月份的第一个月,则可以.
我试过了:
DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("MMMM yyyy").toFormatter();
TemporalAccessor ta = formatter.parse(node.textValue());
Instant instant = LocalDate.from(ta).atStartOfDay().atZone(ZoneId.systemDefault()).toInstant();
Date d = Date.from(instant);
Run Code Online (Sandbox Code Playgroud)
但由于缺少这一天,它不起作用.
你所拥有的是一个YearMonth,而不是LocalDate因为缺少这一天.
以下作品:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM yyyy", Locale.ENGLISH);
YearMonth yearMonth = formatter.parse("October 2015", YearMonth::from);
LocalDate date = yearMonth.atDay(1);
System.out.println(yearMonth); // prints "2015-10"
System.out.println(date); // prints "2015-10-01"
Run Code Online (Sandbox Code Playgroud)
如果您希望将其作为a java.util.Date,则需要指定您所指的时区,可能是UTC还是系统默认值?
// ZoneId zone = ZoneOffset.UTC;
ZoneId zone = ZoneId.systemDefault();
Date javaUtilDate = Date.from(date.atStartOfDay(zone).toInstant());
System.out.println(javaUtilDate); // prints "Thu Oct 01 00:00:00 CEST 2015"
// because i'm in Europe/Stockholm.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |