java - SimpleDateFormat 解析有什么问题
问题描述
public static String Date() throws IOException
{
URL url = new URL(target);
URLConnection conn = url.openConnection();
Map headers = conn.getHeaderFields();
Set<String> keys = headers.keySet();
String gmtTime = conn.getHeaderField("Date");
gmtTime = gmtTime.replace("GMT", "").trim();
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
java.util.Date date = null;
try {
System.out.println(gmtTime);
date = format.parse(gmtTime);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return gmtTime;
}
Tue, 26 May 2020 07:08:22
java.text.ParseException: Unparseable date: "Tue, 26 May 2020 07:08:22"
at java.base/java.text.DateFormat.parse(DateFormat.java:395)
at ex.Time.Date(Time.java:34)
at ex.ServerTime_CMW.draw(ServerTime_CMW.java:35)
at processing.core.PApplet.handleDraw(PApplet.java:2482)
at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1547)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
我不知道为什么会发生 ParseException... 我的日期字符串是“Tue, 26 May 2020 07:08:22” 而我认为的格式是“EEE, dd MMM yyyy HH:mm:ss”
解决方案
dd MMM yyyy 不适用于所有语言环境。在美国,是的。在加拿大,不……这在加拿大不是合法的解析格式。如果您正在使用替换过时的 java.util.Date 类的新时间库,那么您可以通过将 Locale.Root 作为第二个参数传递给 format 调用来转义您的 Locale。
编辑:在加拿大,我必须从银行 pdf 格式化 dd MMM yyyy,我不得不离开我的默认区域设置,并使用它。当然,Java 8 时代。多态是我的其他日期调用工作,而无需传递语言环境。我可以通过另一种方法 Locale.ROOT 来获得难以捉摸的“dd MMM yyyy”格式。
public static LocalDate parseDate( final String format, final String s ) {
return parseDate( format, s, java.util.Locale.getDefault() );
}
public static LocalDate parseDate( final String format, final String s, final Locale loc ) {
final DateTimeFormatter df = DateTimeFormatter.ofPattern( format, loc );
LocalDate ld; // Check if this was a legal LocalDate.
try {
ld = LocalDate.parse(s, df);
} catch (java.time.format.DateTimeParseException pe) {
//System.out.println( pe.getMessage() );
ld = null; // This will signal an error
}
return ld;
}
推荐阅读
- sql - Teradata - 按表的次数了解负载量
- swift - iOS 13 奇怪的搜索控制器间隙
- c# - 我想从 SQLite DB 中获取所有信息
- android - Android Studio 文档对话框耗时过长
- sql - Redshift - 过滤掉字符左侧或右侧空白的行
- c# - 在 View 中获取空引用异常。剃刀 MVC C#
- laravel - Laravel 查询生成器快速 JSON 连接不为空
- android - 从数据库中检索图像列表并使用 ListView 显示它们?
- java - 处理来自 rabbitmq 错误队列的消息
- google-cloud-platform - 如何获取一个巨大的谷歌云存储桶中所有对象的报告?