2

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

我可以任意将日期、时间固定为某个常数(例如每月第一天的午夜),然后使用 ajava.util.date或 jodaDateTime 但决定尝试在 joda 类型系统中执行此操作。

我的第一步是创建一个YearMonth扩展类AbstractPartial(类比LocalDate)。YearMonth我现在已经到了尝试将a 增加几个月的下一步。我可以自己编写代码(添加 % 12),但我宁愿使用 Joda 风格的方式来执行此操作。

我应该写什么代码,它应该放在哪里,以便我可以为Period我的YearMonth班级增加 13 个月或 2 年?还是我走上了一条坏路?

4

3 回答 3

1

joda-time svn 有一个YearMonth类,为 v2.0 做好了准备。

于 2010-02-15T21:29:41.323 回答
1

年/月数学必须按如下方式完成:

ym = (year*12+month)

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

year = ym / 12
month = ym % 12

没有真正的选择。这可以证明是正确的,实际上没有其他选择会更简单。一些语言(如 Python)有一个divmod结合最后两行代码的函数,但这并没有改变本质。

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

于 2010-01-29T12:21:37.730 回答
-1

日期时间 currentInstant = new DateTime();

// 添加一个月

currentInstant = currentInstant.plusMonths(1);

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

期间 incPeriod = new Period().plusYears(2).plusMonths(13);

currentInstant = currentInstant.plus(incPeriod);

于 2010-02-19T18:34:47.070 回答