我正在使用日历库从我的应用中保存日期。我正在使用sqlite3,只能将int和字符串保存到我的数据库中。日历将转换为长时间,转换后显示正确的日期。但是要将它保存在我的数据库中,我必须将其转换为int。当我将int转换回long并使用setTimeInMillis()时,我的日期会发生变化。我知道当你从长时间转换为int时你会失去精确度。有工作吗?有人告诉我,我必须使用日历库来完成我正在做的事情。以下是给我问题的代码,任何想法。已经进行了谷歌搜索并且没有任何运气
long timing=0;
timing =dateAndTime.getTimeInMillis();
testDate.setTimeInMillis(timing);
int dates= (int) timing;
timing=dates;
testDate.setTimeInMillis(timing);
答案 0 :(得分:3)
并不是说你失去了精确度。更重要的是,long保存的字节多于整数,因此您将丢失int无法保存的任何数据。您最好将long转换为String并将其存储为(Long.toString(l)
)。如果要将其从数据库中取出,只需将String解析为long(Long.parseLong(s)
)。
答案 1 :(得分:2)
为了让您了解int的限制程度,您可以在int中存储的最长时间(以毫秒为单位)为49天。长期拥有足够的信息来计算超过5.8亿年的毫秒数。