Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析一个Fri,2017年11月3日09:12:46显示不可解析的java_Java_Date_Simpledateformat - Fatal编程技术网

解析一个Fri,2017年11月3日09:12:46显示不可解析的java

解析一个Fri,2017年11月3日09:12:46显示不可解析的java,java,date,simpledateformat,Java,Date,Simpledateformat,2017年11月3日星期五09:12:46这是我的日期格式,我想用java中的SimpleDataFormat()解析它 DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH); Date date = df.parse("Fri, 03 Nov 2017 09:12:46"); System.out.println(date); 我曾经有一个任务,就是编写一个特

2017年11月3日星期五09:12:46这是我的日期格式,我想用java中的SimpleDataFormat()解析它

    DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
    Date date = df.parse("Fri, 03 Nov 2017 09:12:46");
    System.out.println(date);

我曾经有一个任务,就是编写一个特性,能够将日期字符串解析为日期,而不必事先知道格式。换句话说,如果字符串是有效的日期,则应将其识别为日期,并将其解析为日期,而不管其格式如何。因此,我提出的解决方案是有一个配置文件,其中包含我支持的所有日期格式。我一个接一个地阅读它们,并尝试用这种格式解析字符串。如果效果很好,我会停止,因为我得到了我的结果,如果没有,我会继续到最后。如果所有格式都失败,则字符串不是日期或格式不受支持。当然,添加(和删除)支持的格式不需要修改代码,因为它是我的配置文件。此外,格式的顺序也很重要,因为这样我可以控制我是喜欢美国格式还是欧洲格式,反之亦然。我写了一篇文章更详细地描述了这个想法。以下是链接:。标题上说它适用于Java8,但总体思路也适用于早期版本。

tl;博士 java.time 现代方法使用java.time类来取代与java最早版本捆绑在一起的麻烦的旧日期时间类。避免使用
SimpleDateFormat

您的输入缺少任何与UTC或时区的偏移指示器。因此,我们将解析为
LocalDateTime

DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) ;
LocalDateTime ldt = LocalDateTime.parse( "Fri, 03 Nov 2017 09:12:46" , f ) ;

到目前为止,您尝试过什么吗?预期的输出是什么?我必须获取日期和纽约的时区。为什么要使用
SimpleDateFormat
?和他一起工作要好得多<坦率地说,code>SimpleDateFormat已经过时很久了,而且是出了名的麻烦。向我们展示给您“不可解析日期”消息的代码,希望我们能找出您的错误所在,您能从中了解更多信息吗?您以这种方式处理了多少数据?我只是好奇,如果数据很大,我会预测性能会很差。实际上,文件中的数据是在启动时读取到内存中的,所以所有掩码的读取都是在内存中完成的。另外,我使用的是Java8,所以我在格式化中扩展使用了WildCRD,这样可以减少不同格式的数量。总而言之,它在每秒几千到十万帕森斯的速度下工作,并且工作得很好。如果我需要进一步的性能提升,那么我可以添加并行处理线程的功能。但我不需要它谢谢你的信息。嗯,与我的lib的比较可能也会让您感兴趣,特别是在相同的地区,如果模式由分隔符“|”连接。我认为这比使用可选择的括号更可读,也更准确(而且在我自己的测试中有更多的性能)。这个代码使用了现在由JavaTimes类取代的麻烦的旧日期时间类。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE, dd MMM uuuu HH:mm:ss", Locale.US ) ;
LocalDateTime ldt = LocalDateTime.parse( "Fri, 03 Nov 2017 09:12:46" , f ) ;