我使用下面的代码计算两个日期之间的年、月和天的数目,使用joda-time
public void getDateDiff(View view) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy").withLocale(Locale.US);
DateTime startDate = null;
DateTime endDate = null;
// expected output 23...2....29
try {
startDate = formatter.parseDateTime("01/09/1995");
endDate = formatter.parseDateTime("30/11/2018");
Period period = new Period(startDate, endDate);
Log.e("No Of Years : ", period.getYears() + " Years, ");
Log.e("No Of Months : ", period.getMonths() + " Months, ");
Log.e("No Of Days : ", period.getDays() + " Days, ");
tvResult.setText(String.format("No Of Years : %d Years, \nNo Of Months : %d Months, \nNo Of Days : %d Days, ", period.getYears(), period.getMonths(), period.getDays()));
} catch (Exception e) {
e.printStackTrace();
}
}
以上代码的预期输出是(使用此站点并使用google play store中的一个应用程序进行勾选)
23 years, 2 months, 29 days
/goku.com.demo E/No Of Years :: 23 Years,
/goku.com.demo E/No Of Months :: 2 Months,
/goku.com.demo E/No Of Days :: 1 Days,
implementation 'joda-time:joda-time:2.9.9'
如果需要更多的信息请告诉我。提前道谢。你的努力将会受到赞赏。
Joda时间代码不能工作的原因是,如果不提供PeriodType
对象,则使用标准的PeriodType。标准期间类型不仅定义要包括在期间计算中的年、月和日,还定义周。您没有显示周数,在您的情况下是4。如果您编写period.getWeeks()
,它将返回4
。
为了使其工作,您必须提供periodtype
作为period
构造函数的第三个参数。如果将期间
的声明更改为
Period period = new Period(startDate, endDate, PeriodType.yearMonthDay());
那就行了。期间计算将只使用年、月和日字段。
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/yyyy").withLocale(Locale.US);
// expected output 23...2....29
LocalDate startDate = LocalDate.parse("01/09/1995", f);
LocalDate endDate = LocalDate.parse("30/11/2018", f);
Period period = Period.between(startDate, endDate);
我看到这段使用java.time
的代码实际上与@maxxfrenzy的代码相同。这并不是因为复制粘贴,而是因为新的Java日期和时间API被设计成既明确又简单。
我试图在我正在创建的C#应用程序中显示两个日期之间的年、月和日。(使用控制台进行测试) 我正在使用NodaTime来实现这一点,但在接下来的几个月里,我遇到了一些问题。 我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。 大多数时候函数工作但有时它不添加月如果天 我使用这个代码进行测试 (2017, 10, 16)和(2018, 1, 15)应该显示为3个月,但它们显示为2个
问题内容: 如何找到两个Joda-Time DateTime实例之间的天数差异?“天数差异”是指如果开始时间是星期一,结束时间是星期二,则无论返回日期和开始时间/结束时间是小时/分钟/秒,我都希望返回值为1。 如果开始时间是晚上,结束时间是上午,则给我0。 我在其他日期字段上也遇到了同样的问题,因此我希望有一种通用的方法可以“忽略”重要性较低的字段。 换句话说,2月至3月4日之间的月份也将为1,而
我有两次约会。一个是以YYYYMMDD格式从其他应用程序的表中检索的,第二个日期是本地时间,我需要这两个日期之间的天数/月/年。 我试过了 但这给了我一些乱七八糟的数字。 变量$t=Fri Dec31 00:00:00 9999 变量$今天=Wed Feb19 14:40:55 2020 产出:25182094888 有什么想法吗?提前谢谢。
问题内容: 如果不使用PHP 5.3的date_diff函数(我使用的是PHP 5.2.17),是否有一种简单而准确的方法?我正在考虑以下代码,但是我不知道如何计算leap年: 我正在尝试计算一个人的月数。 问题答案: 您可能还希望将某天包括在内,具体取决于您是否指的是 整个 月。希望你能明白。
问题内容: 我第一次在Spring 3.0项目中使用Joda time api。现在,我有一个开始和结束日期,我想获取这两个日期之间所有星期一的日期。我怎样才能做到这一点 ? 问题答案:
我已经搜索了4个小时了,但是还没有找到一个用JavaScript计算两个日期(年、月和天)之间差异的解决方案,比如:2010年4月10日是3年、x月和y天之前。 有很多解决方案,但它们只提供了日、月或年的格式差异,或者它们不正确(意味着没有考虑一个月或闰年的实际天数,等等)。做那件事真的有那么难吗? 我看了一下: http://momentjs.com/->只能输出年、月或天的差异 http://