我正在尝试使用月度数据的时间序列。也就是说,每个月都有一个值,没有与之关联的具体日期(或时间)。
我可以任意修正一天,时间在某个常数(例如月初的午夜)然后使用java.util.date
或joda DateTime
但是决定尝试在joda类型中执行此操作系统
我的第一步是创建一个YearMonth
类,扩展AbstractPartial
(类似于LocalDate
)。我现在已经到了下一步尝试将YearMonth
增加了几个月。我可以自己编写代码(添加%12),但我宁愿用Joda风格的方式来做这个。
我应该编写什么代码,以及它应该在哪里生活,以便我可以在我的Period
课程中添加13个月或2年YearMonth
?还是我走错了路?
答案 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);