Java的getDate返回错误的日期

时间:2016-03-29 11:35:44

标签: java android date parsing getdate

我正在从Parse数据库中检索一些日期。问题是从数据库中检索的日期之一返回错误的日期。在这种情况下,当我检索日期01/10/2016时,它将返回02/10/2016!但是,其他日期会返回正确的日期(在本例中是日志中的另外两个日期(2016年2月7日和2016年2月21日)。

奇怪的原因是什么导致只在这一个日期返回错误的日期,而在其他日期返回正确的日期?!

(list是我数据库中parseObjects的列表,包含日期)

Date[] surveyDate = new Date[list.size()];
for(int i = 0; i<list.size(); i++){
    surveyDate[i] = list.get(i).getDate("day");
    System.out.println("surveyDate: " +surveyDate[i].getDate() + ", " + (surveyDate[i].getMonth()+1) + ", " + (surveyDate[i].getYear()+1900));
}

日志

I/System.out: surveyDate: date: 7, month: 2, 2016
I/System.out: surveyDate: date: 21, month: 2, 2016
I/System.out: surveyDate: date: 2, month: 10, 2016

这里我在数据库上有一个我的日期图像,你可以看到只返回最后一个(10月1日)的错误值。

顺便说一句,不要担心图片中显示的其他日期,它们会被排序并整理到列表中。

数据库日期

enter image description here

2 个答案:

答案 0 :(得分:2)

检查时区。数据库中的1/10/2016日期接近午夜。

也许您正在GMT中检索这些日期并使用JVM时区。

如果您也在控制台上打印时间会有所帮助。

答案 1 :(得分:0)

可能与时区有关。检查数据库服务器的时区和正在检索记录的服务器,它们可能不同。

一个好的做法是始终使用datetimeoffset来避免混淆。