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 ...我的日期字符串是“星期二,2020年5月26日07:08:22”我认为的格式是“ EEE,dd MMM yyyy HH:mm:ss”
dd MMM yyyy不适用于所有语言环境。在美国,是的。在加拿大,不……不是加拿大的合法解析格式。如果您正在使用新的时间库替换过时的java.util.Date类,则可以通过将Locale.Root作为第二个参数传递给format调用来转义Locale。
编辑:在加拿大,我必须从银行pdf格式格式化dd MMM yyyy,我必须保留默认的Locale来使用它,并使用了它。当然,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;
}