2

月次データの時系列を処理しようとしています。つまり、各月に値があり、それに関連付けられた特定の日付(または時刻)はありません。

曜日と時刻を一定の定数(たとえば、月の最初の真夜中)に任意に固定してから、java.util.dateまたはjodaを使用するDateTime こともできますが、joda型システム内でこれを実行することにしました。

私の最初のステップは、(に類似して)YearMonth拡張するクラスを作成することでした。これで、aを数か月インクリメントしようとする次のステップに到達しました。自分でコードを書くこともできますが(%12を追加)、これを行うにはJodaスタイルの方法を使用したいと思います。AbstractPartialLocalDateYearMonth

Periodたとえば、YearMonthクラスに13か月または2年を追加できるように、どのコードを記述し、どこに配置する必要がありますか?それとも私は悪い道を進んでいますか?

4

3 に答える 3

1

年/月の計算は次のように行う必要があります。

ym = (year*12+month)

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

year = ym / 12
month = ym % 12

本当の選択肢はありません。これは確かに正しいことであり、実際にこれ以上単純な方法はありません。一部の言語(Pythonなど)には、divmodコードの最後の2行を組み合わせる関数がありますが、本質は変わりません。

年月として人々に表示する単位(月)があります。それは、ヤード-フィートまたは時間-分、または2つの部分からなるベースへのその他の単純な変換である可能性もあります。

于 2010-01-29T12:21:37.730 に答える
1

joda-time svnには、YearMonthv2.0に対応したクラスがあります。

于 2010-02-15T21:29:41.323 に答える
-1

DateTime currentInstant = new DateTime();

//月を追加します

currentInstant = currentInstant.plusMonths(1);

// 2Y+13Mを追加=>3Y1M

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

currentInstant = currentInstant.plus(incPeriod);

于 2010-02-19T18:34:47.070 に答える