【问题标题】:How parse date in Java ? some confusion on date formats如何在 Java 中解析日期?日期格式的一些混淆
【发布时间】:2015-02-26 06:00:29
【问题描述】:

我使用 twitter 并使用 API 获取推文,为此我正在使用 twitter4j 库。 在那我得到推文日期为“Thu Feb 26 00:16:19 EST 2015”,这是一个日期字符串。如何将此日期字符串解析为 Date 对象。

【问题讨论】:

  • DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); Date startDate = df.parse(startDateString); - 更多关于这个here

标签: java android date date-format


【解决方案1】:

Java 7 或更低版本:

如果您使用 Java 7 或更低版本,则可以这样解析日期(有关日期时间格式的更多信息,请点击此处http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html):

public static Date java7() throws ParseException {
    String dateAsString = "Thu Feb 26 00:16:19 EST 2015";

    DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    return df.parse(dateAsString);
}

Java 8:

Java 8 有一个新的日期/时间 API (java.time),因此您可以使用新的 API 进行类似的解析:

将解析的日期/时间转换为本地时区(当前计算机时区):

public static LocalDateTime java8() {
    String dateAsString = "Thu Feb 26 00:16:19 EST 2015";

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy");
    return LocalDateTime.parse(dateAsString, formatter);
}

如果您需要保留原始字符串中的时区信息,请使用 ZonedDateTime 而不是 LocalDateTime:

public static ZonedDateTime java8Zoned() {
    String dateAsString = "Thu Feb 26 00:16:19 EST 2015";

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy");
    return ZonedDateTime.parse(dateAsString, formatter);
}

有关 java.time API 中日期/时间格式的更多信息:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

另外,请注意旧的 SimpleDateFormat 和新的 java 8 DateTimeFormatter 之间的主要区别在于 SimpleDateFormat 不是线程安全的。这意味着您不能跨多个并行线程使用相同的格式化程序实例。然而,新的 DateTimeFormatter 是线程安全的。

【讨论】:

    猜你喜欢
    • 2018-10-05
    • 1970-01-01
    • 2020-07-22
    • 2015-08-13
    • 1970-01-01
    • 2014-09-26
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多