我的日期为String
:
String string = "16.03.2017, 09:22";
我正在尝试将其转换为Date
。
Locale russianLocale = new Locale.Builder().setLanguage("ru").setRegion("RU").build();
Date date = new SimpleDateFormat("DD.MM.YYYY, HH:mm",russianLocale).parse(string);
无论我给这个功能赋予什么价值,它都会打印日期“Mon Dec 26 09:22:00 MSK 2016”。时间值是最新的,但日期始终相同。
这是如何引起的?如何解决?
答案 0 :(得分:0)
您的格式设置模式不正确。使用的代码区分大小写。 dd
和yyyy
应为小写。
你也忽略了时区的关键问题。
您正在使用麻烦的旧遗留日期时间类,例如Date
和SimpleDateFormat
。请改用现代java.time类。关于此主题的Stack Overflow上有数百个现有问题和解答。搜索类名ZoneId,LocalDateTime,ZonedDateTime和DateTimeFormatter。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd.MM.uuuu, HH:mm" );
LocalDateTime ldt = LocalDateTime.parse( "16.03.2017, 09:22" , f );
答案 1 :(得分:0)
您的日期格式不正确。使用此行替换代码中的那一行:
date = new SimpleDateFormat("dd.MM.yyyy, HH:mm", russianLocale).parse(string);
完整代码:
private static Date convertStringToDate(String string) {
Date date = new Date();
Locale russianLocale = new Locale.Builder().setLanguage("ru").setRegion("RU").build();
try {
date = new SimpleDateFormat("dd.MM.yyyy, HH:mm", russianLocale).parse(string);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
希望这有帮助!
答案 2 :(得分:0)
只需更改SimpleDateFormat cunstructor中的格式即可。您使用了错误的格式化程序DD.MM.YYYY,HH:mm。所以只需用" dd.MM.yyyy替换它,HH:mm"
private static Date convertStringToDate(String string){ 日期日期=新日期(); Locale russianLocale = new Locale.Builder()。setLanguage(" ru")。setRegion(" RU")。build(); 尝试{ date = new SimpleDateFormat(" dd.MM.yyyy,HH:mm&#34 ;, russianLocale).parse(string); } catch(ParseException e){ e.printStackTrace(); } 归期; }