我需要将字符串531772200000
转换为Java Date
对象。日期存储在数据库中。
当我这样做时,我得到java.text.ParseException: Unparseable date: "531772200000"
。
我的代码:
String dateToBeConverted = String.valueOf(dbObject.get("customerDateOfBirth"));
String parseabledate = dateToBeConverted
.replace("/Date(","")
.replace(")/","")
.replace("+0530", "");
dbObject.put("_id", String.valueOf(dbObject.get("userInfoId")));
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date;
date = formatter.parse(parseabledate);
答案 0 :(得分:1)
这看起来像一个时间戳值,这可能会给你一个日期:
new Date(Long.parseLong("531772200000"));
于1986年11月7日星期五18:30:00 GMT + 0000
答案 1 :(得分:1)
这是一个可以正确格式化日期的解决方案。
String d = "531772200000";
SimpleDateFormat newFormatter = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date date1 = new Date(Long.parseLong(d));
System.out.println(newFormatter.format(date1)); //Will print out as 07-Nov-1986
} catch (ParseException e) {
e.printStackTrace();
}
另一种解决方案是使用Joda Time下面的解决方案。
String d = "531772200000";
DateTime newDate = new DateTime(Long.parseLong(d));
DateTimeFormatter dd = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
DateTime date = dd.parseDateTime(newDate.toString());
System.out.println(date.toString("dd-MMM-yyyy")); //Prints out as 07-Nov-1986
我个人更喜欢使用第二种解决方案(Joda Time),因为它更好更容易。
答案 2 :(得分:0)
这是纪元时间格式。
有人已经在https://stackoverflow.com/a/20732668/379779回答了这个问题 并在此网站http://www.epochconverter.com/
中测试您的纪元时间