java - 无法解析的日期异常java日期模式
问题描述
我在尝试使用这种格式解析日期时遇到错误:
2001 年 3 月 26 日 2001 年 8 月 15 日
我正在使用下一个代码:
private void parseDate(String firstDate) {
Date fDate = null;
try {
fDate = new SimpleDateFormat("dd-MMM-yyyy").parse(firstDate);
} catch (ParseException e) {
e.printStackTrace();
}
}
但我收到错误消息:无法解析的日期:“2001 年 8 月 15 日”。我不太确定我必须使用什么日期格式。
谢谢
解决方案
tl;博士
LocalDate
.parse(
"15-August-2001" ,
DateTimeFormatter.ofPattern( "dd-MMMM-uuuu" , Locale.US )
)
.toString()
提示:最好仅使用标准ISO 8601格式以文本方式交换日期时间数据。
java.time
Deadpool的答案虽然在技术上是正确的,但已经过时了。现代方法使用java.time类,通过采用 JSR 310 取代了传统的日期时间类。
LocalDate
该类LocalDate
表示没有时间、没有时区或从 UTC 偏移的仅日期值。
DateTimeFormatter
使用 定义自定义格式模式DateTimeFormatter.ofPattern
。格式化代码与遗留类并不完全相同SimpleDateFormat
,因此请务必仔细研究 Javadoc。
指定 aLocale
以确定用于翻译月份名称的人类语言。
String input = "15-August-2001" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMMM-uuuu" , Locale.US ) ;
LocalDate ld = LocalDate.parse( input , f ) ;
System.out.println( "ld.toString(): " + ld ) ;
ld.toString(): 2001-08-15
推荐阅读
- java - 将 Java HashSet 转换为 PHP
- python - Django Admin Sortable 2不保存订单
- detection - Google Cloud Vision API 上是否有任何选项可以从扫描的图像中检测并返回表格(带有标题的行和列)?
- spring-integration - Spring集成dsl outboundGateway使用表达式设置查询参数
- python - 无法从远程机器连接到 Cassandra 服务器
- amazon-web-services - aws s3 sync 是否有最小尺寸才能工作?
- apache-spark - 调度从 HDFS 导出到 S3 的输出
- 2d - Armadillo 2D FFTW 实数到复数 DFT Hermetian 对称性
- docker - 通过 docker 容器上传文件
- json - kotlinx JSON.stringify 忽略空值