【问题标题】:Convert string back to java Date [duplicate]将字符串转换回java Date [重复]
【发布时间】:2017-03-24 12:40:27
【问题描述】:

我有一个日期字符串,格式为:

“2016 年 9 月 18 日星期日 00:05:35 GMT+07:00”

我从媒体存储日期获取此格式。如何在 java/android 中将其转换为 Date 对象?

【问题讨论】:

  • 你必须使用SimpleDateFormat类。
  • 哥们有用吗?
  • 发帖前搜索 Stack Overflow。这已经被问了数百次了。

标签: java android date calendar simpledateformat


【解决方案1】:

可以使用SimpleDateFormat 类将String 中的日期解析为现有的日期对象。通过创建SimpleDateFormat 对象并在其构造函数中指定日期模式,您将能够解析存储在字符串中的日期。

对于您的特定案例代码将如下所示:

SimpleDateFormat format = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");

Date date = null;
try {
    date = format.parse(dateAsString);
} catch (ParseException e) {
    e.printStackTrace();
}

从图案可以看出:

EEE - 以三个字母表示的星期几(例如 Sun、Mon、Tue、Wed、Thu、Fri、Sat)

MMM - 一年中的月份(0 到 11 之间)

dd - 一个月中的某天

HH - 小时(00 到 23 之间)

mm - 分钟(00 到 59 之间)

ss - 秒(00 到 59 之间)

z - 时区(在您的情况下为通用时区 - 格林威治标准时间)

yyyy - 年

此外,如果您还想将此Date 对象传递给某个Calendar 对象,您还需要在那里设置时区。

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+07:00"));
calendar.setTime(date);

但是,如果您的 TimeZone 发生变化,那么您可以从字符串中提取 timeZone 部分:

String timeZone = dateAsString.substring(19, 28);
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(timeZone));
calendar.setTime(date);

注意substring()函数的开始和结束索引

【讨论】:

  • GMT+07:00 的格式字符串是什么
  • @PraveenPandey 我已经更新了我的答案。看看它,让我知道它是否有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2014-01-07
  • 2016-07-07
  • 1970-01-01
  • 2011-07-01
  • 2018-11-05
  • 2011-08-30
相关资源
最近更新 更多