字符串数据位于之前以“Mon Jan 08 18:55:57 GMT+05:30 2024”格式存储的文件中。我使用以下代码来转换字符串以获取值“08 Jan 2024”
Boolean goahead = false;
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
SimpleDateFormat formatterOut = new SimpleDateFormat("dd MMM yyyy");
try {
pundate = formatter.parse(punchDate);
System.out.println(pundate);
System.out.println(formatterOut.format(pundate));
} catch (ParseException e) {
e.printStackTrace();
}
String convertedtodaydate = dateFormater(String.valueOf(LocalDateTime.now()), "dd MMM yyyy", "yyyy-MM-dd"); //Output is 16 Feb 2024
try {
if(Objects.requireNonNull(sdf.parse(convertedtodaydate)).after(sdf.parse(formatterOut.format(pundate)))) {
goahead = true;
}
} catch (ParseException e) {
e.printStackTrace();
}
我得到的错误是
W/System.err: java.text.ParseException: Unparseable date: "16 Feb 2024"
有没有更简单的方法来检查存储的日期是否早于当前日期?
永远不要使用有严重缺陷的遗留类,例如
SimpleDateFormat
、Date
、Calendar
。仅使用 java.nime 类。
永远不要打电话给
LocalDateTime.now
。我无法想象这是最佳选择的场景。该类无法表示某个时刻,因为它缺少时区或偏移量的上下文。
字符串数据位于之前以“Mon Jan 08 18:55:57 GMT+05:30 2024”格式存储的文件中。
切勿使用本地化格式以文本方式存储日期时间值。仅使用 ISO 8601 格式进行数据存储和数据交换。
使用
DateTimeFormatter
解析文本。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss OOOO uuuu" ) ;
String input = "Mon Jan 08 18:55:57 GMT+05:30 2024" ;
ZonedDateTime zdt = ZonedDateTime.parse( input , f ) ;