早上好,
我开发了一个android应用程序,我疯了!
由于几天,我试图得到2个日期之间的差异天.
我在乔达时间就意识到了-这似乎行得通.
DatePicker datepicker = (DatePicker) findViewById(R.id.Picker);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, datepicker.getYear());
cal.set(Calendar.MONTH, datepicker.getMonth());
cal.set(Calendar.DATE, datepicker.getDayOfMonth());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
long sqlDate = cal.getTimeInMillis();
Calendar calToday = Calendar.getInstance();
calToday.set(Calendar.YEAR, calToday.get(Calendar.YEAR));
calToday.set(Calendar.MONTH, calToday.get(Calendar.MONTH));
calToday.set(Calendar.DATE, calToday.get(Calendar.DATE));
calToday.set(Calendar.HOUR_OF_DAY, 0);
calToday.set(Calendar.MINUTE, 0);
calToday.set(Calendar.SECOND, 0);
Date date1 = new Date(
datePicker.getYear()-1900,
datePicker.getMonth(),
datePicker.getDayOfMonth()
);
Date today = new Date(
calToday.get(Calendar.YEAR)-1900,
calToday.get(Calendar.MONTH),
calToday.get(Calendar.DAY_OF_MONTH)
);
int days = Days.daysBetween(new DateTime(today), new DateTime(date1)).getDays();
我将长sqlDate保存在数据库中.
这是日期选择器的日期(以毫秒为单位).
现在,我想通过查询请求此日期,并计算以毫秒为单位的日期与现在的日期之间的时差天数.
我试试这个:
Calendar calToday = Calendar.getInstance();
calToday.set(Calendar.YEAR, calToday.get(Calendar.YEAR));
calToday.set(Calendar.MONTH, calToday.get(Calendar.MONTH));
calToday.set(Calendar.DATE, calToday.get(Calendar.DATE));
calToday.set(Calendar.HOUR_OF_DAY, 0);
calToday.set(Calendar.MINUTE, 0);
calToday.set(Calendar.SECOND, 0);
long Now = calToday.getTimeInMillis();
long DiffDays = (sqlDate - Now) / (24 * 60 * 60 * 1000);
Log.e("-->", ""+sqlDate );
Log.e("-->", ""+Now);
Log.e("-->", ""+(sqlDate - Now));
Log.e("-->", ""+DiffDays);
Log.e("-->", "====================");
记录结果:
12-02 07:19:09.931 26600-26600/? E/-->: 1451606400515
12-02 07:19:09.931 26600-26600/? E/-->: 1449014400938
12-02 07:19:09.931 26600-26600/? E/-->: 2591999577
12-02 07:19:09.931 26600-26600/? E/-->: 29
12-02 07:19:09.931 26600-26600/? E/-->: ====================
12-02 07:19:09.931 26600-26600/? E/-->: 1449187200127
12-02 07:19:09.931 26600-26600/? E/-->: 1449014400942
12-02 07:19:09.931 26600-26600/? E/-->: 172799185
12-02 07:19:09.931 26600-26600/? E/-->: 1
12-02 07:19:09.931 26600-26600/? E/-->: ====================
但这是错误的.
例如:
这是sqlDate的结果-现在= 2591999577(毫秒)
2591999577 /(24 * 60 * 60 * 1000)= 29,9999(30天)
不是29天
以及为什么得到十进制结果-我计算每个时间格式00:00:00到00:00:00
我希望你能帮帮我 :'(
解决方法:
您没有将毫秒清零:)
尝试:
Calendar calToday = Calendar.getInstance();
calToday.set(Calendar.YEAR, calToday.get(Calendar.YEAR));
calToday.set(Calendar.MONTH, calToday.get(Calendar.MONTH));
calToday.set(Calendar.DATE, calToday.get(Calendar.DATE));
calToday.set(Calendar.HOUR_OF_DAY, 0);
calToday.set(Calendar.MINUTE, 0);
calToday.set(Calendar.SECOND, 0);
calToday.set(Calendar.MILLISECOND, 0); // this is important
long Now = calToday.getTimeInMillis();
long DiffDays = (sqlDate - Now) / (24 * 60 * 60 * 1000);
Log.e("-->", ""+sqlDate );
Log.e("-->", ""+Now);
Log.e("-->", ""+(sqlDate - Now));
Log.e("-->", ""+DiffDays);
Log.e("-->", "====================");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。