Java 如何解析这个特定的日期数据?
我有一个csv文件和此表单: 我不是来解析这种类型的数据的。 我尝试用一个简单的例子,但它不起作用。然而,我认为我的SimpleDataFormat是正确的Java 如何解析这个特定的日期数据?,java,date,simpledateformat,Java,Date,Simpledateformat,我有一个csv文件和此表单: 我不是来解析这种类型的数据的。 我尝试用一个简单的例子,但它不起作用。然而,我认为我的SimpleDataFormat是正确的 Date date = null; String date1 ="22 févr. 17, 17:11"; SimpleDateFormat formater = null; formater = new SimpleDateFormat("dd MMM YY , hh:mm "); try {
Date date = null;
String date1 ="22 févr. 17, 17:11";
SimpleDateFormat formater = null;
formater = new SimpleDateFormat("dd MMM YY , hh:mm ");
try {
date = formater.parse(date1);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
避免遗留日期时间类
您正在使用可怕的日期时间类,这些类在几年前被JSR310中定义的现代java.time类所取代
java.time
仅使用java.time包中的类。对于具有一天中的时间但缺少时区上下文或UTC偏移量的日期,这将是LocalDateTime
指定地区
,以确定翻译中使用的人类语言,以及确定缩写、标点符号、大写、部分顺序等问题时使用的文化规范
String input = "1 mars 17, 20:21" ;
DateTimeFormatter f =
DateTimeFormatter
.ofPattern( "d MMM uu, HH:mm" )
.withLocale( Locale.CANADA_FRENCH ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
Javadoc中解释了这些格式代码。仔细研究。区分大小写 避免遗留日期时间类
您正在使用可怕的日期时间类,这些类在几年前被JSR310中定义的现代java.time类所取代
java.time
仅使用java.time包中的类。对于具有一天中的时间但缺少时区上下文或UTC偏移量的日期,这将是LocalDateTime
指定地区
,以确定翻译中使用的人类语言,以及确定缩写、标点符号、大写、部分顺序等问题时使用的文化规范
String input = "1 mars 17, 20:21" ;
DateTimeFormatter f =
DateTimeFormatter
.ofPattern( "d MMM uu, HH:mm" )
.withLocale( Locale.CANADA_FRENCH ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
Javadoc中解释了这些格式代码。仔细研究。区分大小写 YY和mm后面有一个空格。那不行。另外,使用
yy
,而不是yy
——这是一种不同的年份。谢谢弗雷德里克!它现在可以用于我的简单示例,但不能用于我的csv表单,事实上,java返回给我这个问题:无法解析的日期:“19 f�vr.18,09:05“我如何修复UTF-8编码?这是另一个问题。不,这不总是有效的。为什么不呢?基本上是因为SimpleDateFormat
非常混乱和麻烦。我建议您不要使用SimpleDateFormat
和Date
。这些课程设计拙劣,早已过时。相反,请使用来自的LocalDateTime
和DateTimeFormatter
。当询问不起作用的代码时,除了期望的结果外,请始终包括精确的观察结果。逐字引用任何错误消息或stacktrace。在后一种情况下,将stacktrace格式化为代码,以便于可读,并告诉我们stacktrace指的是代码中的哪一行。YY和mm后面有一个空格。那不行。另外,使用yy
,而不是yy
——这是一种不同的年份。谢谢弗雷德里克!它现在可以用于我的简单示例,但不能用于我的csv表单,事实上,java返回给我这个问题:无法解析的日期:“19 f�vr.18,09:05“我如何修复UTF-8编码?这是另一个问题。不,这不总是有效的。为什么不呢?基本上是因为SimpleDateFormat
非常混乱和麻烦。我建议您不要使用SimpleDateFormat
和Date
。这些课程设计拙劣,早已过时。相反,请使用来自的LocalDateTime
和DateTimeFormatter
。当询问不起作用的代码时,除了期望的结果外,请始终包括精确的观察结果。逐字引用任何错误消息或stacktrace。在后一种情况下,将stacktrace格式化为代码以确保可读性,并告诉我们stacktrace指的是代码中的哪一行。完美,甚至更好u
i.o.y
。值得解释的是,h
表示12小时,而h
表示24小时,特别是20:21。我正要发布类似的代码。因为我们不知道10点前的几个小时在CSV文件中是什么样子的,所以我在格式模式字符串中只放了一个H
。例如,在一天中的一小时内,它将同时接受3
和03
。完美的u
i.o.y
。值得解释的是,h
表示12小时,而h
表示24小时,特别是20:21。我正要发布类似的代码。因为我们不知道10点前的几个小时在CSV文件中是什么样子的,所以我在格式模式字符串中只放了一个H
。例如,对于一天中的一小时,它将同时接受3
和03
。