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

asd*_*sdf 10 java date

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

谢谢你的帮助.

Bal*_*usC 20

使用模数%.

int months = 18;
int years = months / 12; // 1
int remainingMonths = months % 12; // 6
Run Code Online (Sandbox Code Playgroud)


Bas*_*que 5

时间

java.time框架是建立在Java 8和更高版本。这些类取代了旧的麻烦的日期时间类,例如java.util.Date, .Calendar, & java.text.SimpleDateFormat。该乔达时球队还建议迁移java.time。

要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。

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

ThreeTen-额外项目与其他类扩展java.time。该项目是未来可能添加到 java.time 的试验场。你可能在这里找到一些有用的类,如IntervalYearWeekYearQuarter,等。

Period

Period班跟踪时间无关的时间轴年,月,日方面的跨度。一定要normalized养成习惯,强迫它根据一年零六个月重新计算十八个月。

Period period = Period.ofMonths( 18 ).normalized();
Run Code Online (Sandbox Code Playgroud)

提取年数和月数。

int years = period.getYears();
int months = period.getMonths();
Run Code Online (Sandbox Code Playgroud)

您可以调用toString以标准ISO 8601格式为“持续时间”表示此值:PnYnMnDTnHnMnS。在这种格式中,P标记开始,同时T将年-月-日部分与小时-分-秒部分分开(与本问题无关)。

String output = period.toString(); 
Run Code Online (Sandbox Code Playgroud)

P1Y6M