[英]I try to convert a String to Date format in java but has an exception
我尝试将String
转换为Date
格式,但出现异常!
这是我的代码:
SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy");
startDate = format.parse(startDateString);
它应该将"14-MAY-2004"
转换为Date
。 谢谢。
我建议您使用 java.time,现代 Java 日期和时间 API 进行日期工作。
DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("d-MMM-uuuu")
.toFormatter(Locale.ENGLISH);
String startDateString = "14-MAY-2004";
LocalDate startDate = LocalDate.parse(startDateString, dateFormatter);
System.out.println(startDate);
Output 是:
2004-05-14
仅当您对于尚未升级到 java.time 的旧版 API 必不可少时需要Date
object 时,转换:
Instant startOfDay = startDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
Date oldfashionedDate = Date.from(startOfDay);
System.out.println(oldfashionedDate);
Output 在我的时区:
2004 年 5 月 14 日星期五 00:00:00 CEST
这几乎可以肯定是一个语言环境问题。 您没有指定语言环境,因此没有指定月份名称或缩写的语言。 当日期字符串包含某种语言的文本时,请始终这样做。 您的SimpleDateFormat
使用的是 JVM 的默认格式设置区域设置,如果那是非英语区域设置,则解析被视为失败,并出现您提到的异常。
从声明“它应该将 14-MAY-2004 转换为日期”我假设您的输入字符串是 14-MAY-2004 并且您希望将此字符串转换为日期
String js="14-May-2004";
Date dt=new Date(js);
LocalDateTime localDateTime=dt.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
localDateTime.format(DateTimeFormatter.ofPattern("dd-MM-yyyy"));//or in the same format use- "dd-MMM-yyyy"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.