我的日期存储在String
的{{1}}字段中,字符串值为
SQLITE
如何将其转换回"/Date(1411472160000+0100)/"
,以下代码无法正常工作。我想我需要先从毫秒转换,但我不知道如何将上述文本首先变成长格式?
有什么建议吗?
date format
答案 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引用此构造函数。