0

我试图获得两个日期之间的差异,但我坚持将字符串转换为日期。

我的代码是:

    //create a date send it to the database as string
     Date currentDate = new Date(); // date looks like: Sat Sep 01 10:20:14 EEST 2012
     SaveToDB(currentDate.ToString());

在某些时候,我正在尝试从数据库中检索日期:

       String dateStringFromDb = GetDateFromDB(); //Sat Sep 01 10:20:14 EEST 2012
       Date currentDate = new Date();

       //now i'm trying to covnert the dateStringFromDb into a Date, this throws an exception 

       Date dbDate = DateFormat.getInstance().parse(dateStringFromDb); //this throws exception

       long difference = currentDate.getTime() - dbDate.getTime(); // does this give me the correct difference in GMT even if timezones for the two dates are different?

你能指点我正确的解决方案吗?

不幸的是,数据库中的日期是作为字符串检索的,我无法将其更改为另一种类型。所以我需要将该字符串转换为 Date()。

编辑:

例外是:

java.text.ParseException: Format.parseObject(String) failed
    at java.text.Format.parseObject(Unknown Source)
    at main.Program.main(Program.java:20)
4

2 回答 2

2

我建议使用Joda Time API 在 Java 中进行与数据和时间相关的操作。使用此 API,处理timezone和所有相关的转换细微差别都非常容易。

于 2012-09-01T07:45:30.397 回答
0

您应该指定一个 DateFormat 以匹配正在接收的字符串格式

例如。

SimpleDateFormat fromUser = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
String reformattedStr = myFormat.format(fromUser.parse(inputString));

一旦您拥有所需格式的两个日期,然后应用日期算术运算

DateString 的其他格式说明符可在 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html中找到

于 2012-09-01T07:42:59.063 回答