android - 从两个日期中找到月份和日期的差异

标签 android date datetime calendar jodatime

我想找出两个日期之间的月日差。一个是我的系统当前日期,另一个是 future 的日期。

future 的日期是这样的格式:

2014-02-06 21:26

我使用下面的代码来找出不同之处。

1.

currentCal = Calendar.getInstance();
weddingCal = Calendar.getInstance();
weddingCal.clear();
DateFormat formatterResponseDate = new SimpleDateFormat("yyyy-MM-dd HH:mm");
formatterResponseDate.setTimeZone(TimeZone.getTimeZone("GMT")); 
weddingCal.setTime(formatterResponseDate.parse(responseThis.trim()));
long dateDiff = weddingCal.getTimeInMillis() -
currentCal.getTimeInMillis();
long months = dateDiff / (30 * 24 * 60 * 60 * 1000); 
long days = (dateDiff % (30 * 24 * 60 * 60 * 1000)) / (24 * 60 * 60 * 1000);

但它给了我错误的结果,我认为这不方便,因为有时一个月有 31 天。我也用过JODA - Time找出不同之处,但这对我也没有帮助。

2.

currentCal = Calendar.getInstance();
startDate = new DateTime(currentCal.get(Calendar.YEAR),
(currentCal.get(Calendar.MONTH)+1),
currentCal.get(Calendar.DAY_OF_MONTH), currentCal.get(Calendar.HOUR),
currentCal.get(Calendar.MINUTE));
weddingCal = Calendar.getInstance();
weddingCal.clear();
weddingCal.setTime(formatterResponseDate.parse(responseThis.trim()));
endDate = new DateTime(weddingCal.get(Calendar.YEAR), (weddingCal.get(Calendar.MONTH)+1),
weddingCal.get(Calendar.DAY_OF_MONTH), weddingCal.get(Calendar.HOUR),
weddingCal.get(Calendar.MINUTE));
Period period = new Period(startDate, endDate);
tvMonth.setText(String.valueOf(period.getMonths()));
tvDays.setText(String.valueOf(period.getDays()));

两者都不工作请帮助我,我怎样才能找到它? 谢谢

最佳答案

我使用了下面的代码,它工作正常。

currentCal = Calendar.getInstance();
startDate = new DateTime(currentCal.get(Calendar.YEAR),
                         (currentCal.get(Calendar.MONTH)+1),
                         currentCal.get(Calendar.DAY_OF_MONTH),
                         currentCal.get(Calendar.HOUR),
                         currentCal.get(Calendar.MINUTE));
weddingCal = Calendar.getInstance();
weddingCal.clear();
weddingCal.setTime(formatterResponseDate.parse(responseThis.trim()));
endDate = new DateTime(weddingCal.get(Calendar.YEAR),
                       (weddingCal.get(Calendar.MONTH)+1),
                       weddingCal.get(Calendar.DAY_OF_MONTH),
                       weddingCal.get(Calendar.HOUR),
                       weddingCal.get(Calendar.MINUTE));
Period period = new Period(startDate, endDate, PeriodType.yearMonthDayTime());
tvMonth.setText(String.valueOf(period.getMonths()));
tvDays.setText(String.valueOf(period.getDays()));

关于android - 从两个日期中找到月份和日期的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670173/

相关文章:

javascript - 为什么一串数字的工作方式与新日期中的实际数字不同?

python - 在 Python 中从 datetime.now() 中减去 SQL DATETIME

android - 添加 fragment 而不保存到历史堆栈?

javascript - JavaScript 中的 momentJS 没有正确添加天数

javascript - 如何使用Appium更改真实设备上的时间?

postgresql - 使用时区偏移获取日期

java - 在java中将iso8601日期转换为unix时间戳

.net:如何使用这种格式解析日期:2011 年 2 月 8 日 06:46

java - @IntDef注解和别人代码的返回值不能被注解或者如何暂时禁止注解影响代码?

android - adb连接错误:An existing connection was forcibly closed by the remote host