如何在java中将月份转换为年和月

时间:2011-06-05 22:33:23

标签: java date

我是java新手,我希望将月份转换为年份。例如,如果我有18个月并将其除以12,我将有1。5年,但我希望它为1年和6个月。

感谢您的帮助。

2 个答案:

答案 0 :(得分:19)

使用模数%

int months = 18;
int years = months / 12; // 1
int remainingMonths = months % 12; // 6

答案 1 :(得分:3)

java.time

java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date.Calendar和& java.text.SimpleDateFormatJoda-Time团队还建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并在[ThreeTenABP]中进一步适应Android (https://github.com/JakeWharton/ThreeTenABP)。

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter等。

Period

Period课程以年,月和日为单位跟踪与时间轴无关的时间跨度。请务必致电normalized作为习惯,强制它以一年零六个月的速度重新计算十八个月。

Period period = Period.ofMonths( 18 ).normalized();

提取年数和月数。

int years = period.getYears();
int months = period.getMonths();

您可以致电toStringISO 8601PnYnMnDTnHnMnS的标准“durations”格式表示此值。在这种格式中,P标记开头,而T将年 - 月 - 日部分与小时 - 分 - 秒部分分开(与本课题无关)。

String output = period.toString(); 
  

P1Y6M