【问题标题】:Java Parse Date w/ SimpleDateFormat带有 SimpleDateFormat 的 Java 解析日期
【发布时间】:2013-04-24 15:03:30
【问题描述】:

我敢肯定这是一个简单的! 我有这个字符串String date = "Wed, 2 Jan 2013 12:17:15 +0000 (GMT)",我想将其解析为一个日期,以便能够设置 JavaMail 的发送日期。

这是我的完整代码

String dateString = "Wed, 2 Jan 2013 12:17:15 +0000 (GMT)";
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
Date date = sdf.parse(dateString);
System.out.println("Date: " + date.toString());
email.setSentDate(oDate); // Assume email is initialised correctly

预期输出

Date: Wed, 2 Jan 2013 12:17:15 +0000 (GMT)

实际输出

Date: Wed Jan 02 12:17:15 GMT 2013

我什至不关心时间部分,只要我的电子邮件似乎来自正确的日期。

【问题讨论】:

  • 您的模式在解析来自 Gmail API 的电子邮件日期方面效果很好。谢谢。

标签: java date jakarta-mail simpledateformat


【解决方案1】:

试试这个:

String reformattedStr = sdf.format(sdf.parse(dateString));

或者这个

String reformattedStr = sdf.format(sdf.parse(date.toString()));

【讨论】:

  • 是的,就是这样。我想现在的问题是,为什么 Javamail 不喜欢这种格式?
【解决方案2】:

Date.toString() 转换为字符串时应用自己的格式:

Converts this Date object to a String of the form:

     dow mon dd hh:mm:ss zzz yyyy

您应该使用DateFormat 来获取所需的字符串,即发布的代码示例:

System.out.println(sdf.format(date));

【讨论】:

    【解决方案3】:

    setSentDate 方法会在将日期设置在电子邮件消息中之前正确格式化电子邮件消息的日期。这与 Date.toString() 所做的不同。另请参阅MailDateFormat 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      相关资源
      最近更新 更多