android getDate从存储在String字段中的毫秒数

时间:2015-02-24 10:27:25

标签: java android

我的日期存储在String的{​​{1}}字段中,字符串值为

SQLITE

如何将其转换回"/Date(1411472160000+0100)/" ,以下代码无法正常工作。我想我需要先从毫秒转换,但我不知道如何将上述文本首先变成长格式?

有什么建议吗?

date format

2 个答案:

答案 0 :(得分:3)

嗯,从indexOf("(")indexOf("+")子字符串,您应该在 milli 中找到日期。

从那里,我相信你可以找到日期;)

   String s = "/Date(1411472160000+0100)/";
   s = s.substring(s.indexOf("(") + 1, s.indexOf("+"));
   Date d = new Date(Long.parseLong(s));

使用相同的结构,您可以找到timezone (+0100) (from "+" to ")")并使用日历来查找正确时间区域的正确时间。

答案 1 :(得分:3)

首先,您必须从String中解析出时间值,即“1411472160000 + 0100”部分。

此处在“1411472160000 + 0100”中,“+ 0100”是时区信息。如果您不想考虑时区,那么您可以采取以下方法。

方法-1

long timestamp = 1245613885;
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getDefault());
calendar.setTimeInMillis(timestamp * 1000);

int year = calendar.get(Calendar.YEAR);
int day = calendar.get(Calendar.DATE);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

然后以您指定的格式获取日期,您可以使用 -

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(calendar.getTime());
System.out.println(dateString); // 2009-06-21 15:51:25

除了这种方法之外,还有一个名为 JodaTime 的优秀Java日期库。 如果要合并时区信息,可以从JodaTime引用此构造函数。

http://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html#DateTime-long-org.joda.time.DateTimeZone-