ParseExeption 与日期?

Posted

技术标签:

【中文标题】ParseExeption 与日期?【英文标题】:ParseExeption with Date? 【发布时间】:2016-10-08 22:33:43 【问题描述】:

解析日期格式时出现异常?

java.text.ParseException:无法解析的日期:“10-10-2016”

在这一行:

newSelection5 = DateFormat.getDateInstance().parse((String)CalDcB.getSelectedItem());

日期设置为: CalDcB = new DateComboBox(new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH));

我也尝试过不使用 Locale.English。

还有一个危险警报“null”。

【问题讨论】:

仅供参考,非常麻烦的旧日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 8 中内置的 java.time 类所取代,之后。见Tutorial by Oracle。 【参考方案1】:

您可以构造一个与您的格式匹配的SimpleDateFomat 并使用它。

DateFormat df = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
Date d = df.parse("10-10-2016");

【讨论】:

【参考方案2】:

tl;博士

LocalDate.parse( 
    "30-10-2016" , 
    DateTimeFormatter.ofPattern( "dd-MM-uuuu" ) 
)

LocalDate

仅供参考,您正在使用现在遗留的麻烦的旧日期时间类。被java.time 类取代。

LocalDate 类表示没有时间和时区的仅日期值。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" );
LocalDate ld = LocalDate.parse( "30-10-2016" , f );

ld.toString(): 2016-10-30

关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧日期时间类,例如 java.util.Date.Calendarjava.text.SimpleDateFormat

Joda-Time 项目现在位于maintenance mode,建议迁移到 java.time。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。

从哪里获得 java.time 类?

Java SE 8SE 9 及更高版本 内置。 标准 Java API 的一部分,带有捆绑实现。 Java 9 添加了一些小功能和修复。 Java SE 6SE 7 大部分 java.time 功能都在ThreeTen-Backport 中向后移植到 Java 6 和 7。 Android ThreeTenABP 项目专门针对 android 改编了 ThreeTen-Backport(如上所述)。 见How to use…

ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuarter 和more。

【讨论】:

【参考方案3】:

试试这个:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
    Date date = simpleDateFormat.parse("10-10-2016");

【讨论】:

这与现有答案有何不同?【参考方案4】:

好的,它可以正常工作。

我用过:

DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
newSelection5 = df.parse((String)CalDcB.getSelectedItem());

谢谢

【讨论】:

以上是关于ParseExeption 与日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何将开始日期和结束日期与其他开始日期和结束日期分开?

php 获取开始日期与结束日期之间所有日期

java输入的日期与当前的日期做比较?

将输入类型日期与当前日期进行比较

数据表日期排序与日期显示

通过将日期与日历日期进行比较来加载即将发生的事件