【问题标题】:How to convert given days into year, months, days in java [duplicate]java - 如何在java中将给定的日期转换为年、月、日[重复]
【发布时间】:2016-12-15 07:08:33
【问题描述】:

如何在 java 中将给定的日期转换为日历格式。

示例初始日期为 01-01-2015。给定天数为 125 天。这应转换为 0 年 4 个月 5 天并添加到初始日期,即 06-05-2015。

【问题讨论】:

  • 从上述解决方案中,您可以获得要添加的年数、月数、天数。使用 Calendar 对象在您的初始日期中添加这些值。如果你愿意,你可以为闰年添加额外的条件。
  • 如何添加闰年条件?某个月包含 30 天和 31 天..如何处理这种情况...你能不能详细点
  • 对于闰年,您可以检查您的初始日期和最终日期之间的任何一年是否为闰年,中间的每个闰年在最终日期添加 1 天。要检查闰年,只需 year%4 即可。
  • 好的..明白了..几个月的 30 天和 31 天怎么样..
  • " 这应该转换为 0 年、4 个月、5 天" -- 不,不应该。您应该使用良好的 API 将天数直接添加到日期中。最好是 java.time API,请参阅建议的副本。 125 天不是 4 个月和 5 天,这完全取决于您从哪一天开始,因为月份的长度不相等。

标签: java date calendar


【解决方案1】:

您可以使用 java8 新的 java.time API 中的 Period 类将两个日期之间的差异转换为年、月和日:

LocalDate initial = LocalDate.of(2015, 1, 1);

LocalDate end = initial.plusDays(125); 

Period p = Period.between(initial, end);

int years = p.getYears();   // 0
int months = p.getMonths(); // 4 
int days = p.getDays();     // 5

【讨论】:

  • 但应用程序在 java 7 上运行
猜你喜欢
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多