Java 什么';使用joda时间处理月度数据的最佳方式是什么?

Java 什么';使用joda时间处理月度数据的最佳方式是什么?,java,jodatime,Java,Jodatime,我正在尝试处理每月数据的时间序列。也就是说,每个月都有一个值,并且没有与之关联的特定日期(或时间) 我可以任意地将日期、时间固定在某个常量(例如月初的午夜),然后使用java.util.date或jodaDateTime,但我决定尝试在joda类型的系统中这样做 我的第一步是创建一个YearMonth类,它扩展了AbstractPartial(类似于LocalDate)。我现在已经进入下一步,尝试将YearMonth增加几个月。我可以自己编写代码(添加%12),但我更愿意使用Joda风格的方法

我正在尝试处理每月数据的时间序列。也就是说,每个月都有一个值,并且没有与之关联的特定日期(或时间)

我可以任意地将日期、时间固定在某个常量(例如月初的午夜),然后使用
java.util.date
或joda
DateTime
,但我决定尝试在joda类型的系统中这样做

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


我应该写什么代码,它应该在哪里,这样我就可以在我的
YearMonth
类中添加一个13个月或2年的
Period
?还是我走上了一条糟糕的道路?

年/月数学必须按如下方式进行:

ym = (year*12+month)

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

year = ym / 12
month = ym % 12
没有真正的选择。这可以证明是正确的,没有比这更简单的选择了。有些语言(如Python)有一个结合最后两行代码的
divmod
函数,但这并没有改变本质


您有单位(月),您将向人们显示为年-月。它也可以是码-英尺或小时-分钟或任何其他简单的转换为两部分的基础。

joda time svn有一个类,可以用于v2.0。

DateTime currentInstant=new DateTime()

//加一个月

currentInstant=currentInstant.plusMonths(1)

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

句号incPeriod=newperiod().plusYears(2)plusMonths(13)


currentInstant=currentInstant.plus(incPeriod)

我懂数学。乔达似乎下了很大的功夫才有了一个年表,把一年中有12个月这一知识区分开来。你是否认为使用这个是浪费时间?我能想到的唯一增加价值的例子是移动到一个有13个月或每年非偶数个月(农历?)的日历,但这可能是YAGNIDepends计划支持哪些日历的情况。公历非常流行,有固定的年/月关系。其他日历则不是那么简单。你会支持非公历吗?或者您是否担心有人会试图更改公历?此外,您还有一系列类级字段(即
),其中可能包含相关的“12”常量。抱歉,这并不能回答问题。它说明了如何在DateTime中添加年和月。有很好的理由开设一门只知道几年和几个月的课程。谢谢-v2有什么预计到达时间吗?我来看看。经典的OSS答案-当它完成时:-)