使用joda时间操纵月度数据的最佳方法是什么?

时间:2010-01-29 12:17:03

标签: java jodatime

我正在尝试使用月度数据的时间序列。也就是说,每个月都有一个值,没有与之关联的具体日期(或时间)。

我可以任意修正一天,时间在某个常数(例如月初的午夜)然后使用java.util.date或joda DateTime但是决定尝试在joda类型中执行此操作系统

我的第一步是创建一个YearMonth类,扩展AbstractPartial(类似于LocalDate)。我现在已经到了下一步尝试将YearMonth增加了几个月。我可以自己编写代码(添加%12),但我宁愿用Joda风格的方式来做这个。

我应该编写什么代码,以及它应该在哪里生活,以便我可以在我的Period课程中添加13个月或2年YearMonth?还是我走错了路?

3 个答案:

答案 0 :(得分:1)

年/月数学必须按如下方式完成:

ym = (year*12+month)

Do your math on ym.  Add months or years, or whatever

year = ym / 12
month = ym % 12

没有真正的选择。这证明是正确的,没有其他选择实际上更简单。有些语言(如Python)有divmod函数,它结合了最后两行代码,但这并没有改变本质。

您有单位(月),您将作为年月显示给人们。它可能是Yards-Feet或Hours-Minutes或任何其他简单的转换为两部分的基础。

答案 1 :(得分:1)

joda-time svn有一个YearMonth类,为v2.0做好准备。

答案 2 :(得分:-1)

DateTime currentInstant = new DateTime();

//添加一个月

currentInstant = currentInstant.plusMonths(1);

//添加2Y + 13M => 3Y 1M

Period incPeriod = new Period()。plusYears(2).plusMonths(13);

currentInstant = currentInstant.plus(incPeriod);