无法在Java中将String转换为Date

时间:2017-02-28 06:27:06

标签: java date data-conversion

我的日期为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”。时间值是最新的,但日期始终相同。

这是如何引起的?如何解决?

3 个答案:

答案 0 :(得分:0)

您的格式设置模式不正确。使用的代码区分大小写。 ddyyyy应为小写。

你也忽略了时区的关键问题。

您正在使用麻烦的旧遗留日期时间类,例如DateSimpleDateFormat。请改用现代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();         }         归期;     }