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