[英]What's the best way of using joda time to manipulate monthly data?
我正在尝试使用每月数据的时间序列。 也就是说,每个月都有一个值,并且没有与之关联的特定日期(或时间)。
我可以将日期和时间任意固定为某个常数(例如,每月的第一天的午夜),然后使用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
函数,该函数结合了最后两行代码,但并没有改变本质。
您有单位(月),您将以年份-月份显示给人们。 也可能是Yards-Feet或Hours-Minutes或任何其他简单的转换成两部分的基准。
joda-time svn具有YearMonth
类,可用于v2.0。
DateTime currentInstant =新的DateTime();
//加一个月
currentInstant = currentInstant.plusMonths(1);
//加2Y + 13M => 3Y 1M
Period incPeriod = new Period()。plusYears(2).plusMonths(13);
currentInstant = currentInstant.plus(incPeriod);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.