首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期:“清华,2017年12月7日07:40:40”

日期:“清华,2017年12月7日07:40:40”
EN

Stack Overflow用户
提问于 2017-12-08 07:24:21
回答 2查看 175关注 0票数 0

我在尝试解析时得到了上面的异常。我试过以下的日期格式,

代码语言:javascript
复制
SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMM  yyyy  HH:mm:ss ", Locale.ENGLISH);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-08 07:55:29

作为well...what异常,您可以使用空间吗?

代码语言:javascript
复制
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateFormatExample {
 public static void main(String[] args) {
  SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMM yyyy  HH:mm:ss ",Locale.ENGLISH);
   String strDate= sdf.format(new Date());
   System.out.println(strDate);
 }
}

出场券:2017年12月8日星期五07:54:08

票数 0
EN

Stack Overflow用户

发布于 2017-12-08 11:41:45

java.time

SimpleDateFormat类不仅长期过时,而且也是出了名的麻烦。我建议您停止使用java.time,而是使用Java和time,也称为JSR-310。与之共事要好得多。

代码语言:javascript
复制
    System.out.println(LocalDateTime.parse("Thu, 7 Dec 2017 07:40:40 ",
            DateTimeFormatter.ofPattern("E, d MMM yyyy HH:mm:ss ", Locale.ENGLISH)));

这将打印预期的日期和时间:

代码语言:javascript
复制
2017-12-07T07:40:40

出了什么问题

在您的格式模式字符串中,在yyyy之前有两个空格,在后面有两个空格,在日期时间字符串中,似乎每个位置只有一个空格。虽然SimpleDateFormat因解析它应该拒绝的字符串而臭名昭著,但在本例中,它通过抛出ParseException (您在问题标题中引用的消息)来实现对象。

如果您将我的格式模式字符串与您的格式字符串进行比较,您将注意到我只使用了一个d,其中使用了两个。在现代类更为严格的情况下,SimpleDateFormat7dd进行解析:d匹配1位或2位数字的月份日期。其中dd需要两位数。当然,如果需要的话,您可以利用它来进行更严格的验证。

问:我可以在Java版本中使用现代API吗?

如果至少使用Java 6,则可以。

  • 在Java 8和更高版本中,新API是内置的。
  • 在Java6和7中,get ThreeTen Backport是新类的后端(ThreeTen for JSR 310)。
  • 在Android上,使用Android版本的ThreeTen Backport。它被称为ThreeTenABP,在如何在Android项目中使用ThreeTenABP中有一个完整的解释。

有关学习如何使用java.time,请参阅Oracle教程或在网络上找到其他资源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47709595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档