早上好,
我开发了一个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天
以及为什么获得ia十进制结果-我计算每个时间格式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("-->", "====================");
问题内容: 在我的代码中,日期之间的差异是错误的,因为它应该是38天而不是8天。我该如何解决? 问题答案: 问题出在变量中。月以Capital M表示。 尝试更改为: 有关更多信息,请参见此javadoc。 编辑: 这是代码,如果您想以注释的方式打印差异: 希望对您有所帮助!
假设A有两个日期(开始时间) 例如。 感谢帮助。
问题内容: 我编写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别是2/3/2017和3/3/2017时,显示的天数是29.尽管它们是同一天,但显示的是1.(请假的天数。如果请假一天,他必须选择相同的开始日期和结束日期。因此,在这种情况下,他请了两天假。 我究竟做错了什么?感谢您的时间。 注意:请不要使用日期构造函数。检查下面接受的答案。使用simpledateformat或Joda时
我写了以下代码来查找两个日期之间的日期 当开始日期和结束日期分别为2017年2月3日和2017年3月3日时,显示的天数为29天。虽然当他们在同一天,它是显示1。(一个人休假的天数。因此,如果一个人休假一天,他必须选择相同的开始和结束日期。因此,在这种情况下,他休假两天)。 我做错了什么?谢谢你抽出时间。 注意:请不要使用日期构造函数。检查下面被接受的答案。使用simpledateformat或Jo
问题内容: 我在-type字段中将上次登录时间存储在MySQL中。当用户登录时,我想获取上次登录时间与当前时间(我使用)之间的时差。 我该如何计算? 问题答案: 使用MySQL函数。例如,您可以使用: 在您的情况下,函数的第三个参数将是当前登录时间()。第二个参数是上次登录时间,该时间已在数据库中。
问题内容: 如何找到两个Joda-Time DateTime实例之间的天数差异?“天数差异”是指如果开始时间是星期一,结束时间是星期二,则无论返回日期和开始时间/结束时间是小时/分钟/秒,我都希望返回值为1。 如果开始时间是晚上,结束时间是上午,则给我0。 我在其他日期字段上也遇到了同样的问题,因此我希望有一种通用的方法可以“忽略”重要性较低的字段。 换句话说,2月至3月4日之间的月份也将为1,而