我正在从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日)的错误值。
顺便说一句,不要担心图片中显示的其他日期,它们会被排序并整理到列表中。
数据库日期
答案 0 :(得分:2)
检查时区。数据库中的1/10/2016日期接近午夜。
也许您正在GMT中检索这些日期并使用JVM时区。
如果您也在控制台上打印时间会有所帮助。
答案 1 :(得分:0)
可能与时区有关。检查数据库服务器的时区和正在检索记录的服务器,它们可能不同。
一个好的做法是始终使用datetimeoffset来避免混淆。