繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM