2

NSCalender を使用して先月の同日を取得する方法はありますか?

前の月に移動したいが、前と同じ日を選択する必要があります。

やりたいだけ

[components setMonth:([components month] - 1)];

しかし、31日の月から30日の月に移動し、選択した日が31日である場合、これは問題を引き起こします。

Android の例は見つかりましたが、iOS の例は見つかりませんでした。

アンドロイドの例

どんな助けでもいただければ幸いです

4

2 に答える 2

3

このリンクをチェックしてください。

1 か月足す程度ですが、引き算でも同じことができます。

変化する

[dateComponents setMonth:1];

の中へ

[dateComponents setMonth:-1];
于 2013-01-25T20:19:47.190 に答える
1

明白な「正しい」答えも「組み込みの」答えもないようです。

クリスの「単純な」アイデアは無効な日付につながる可能性があるため、エッジケースを処理する必要がある場合があります。

日-月-年を処理するための擬似コード:

  1. 月=12月が日-1-(年-1)で始まる場合、それ以外の場合日-(月-1)-年[dateComponentsを使用]
  2. これが有効な日付であるかどうかを確認します(この質問のようにNSDateFormatterを使用します
  3. 有効な日付に達するまで、1日減算を繰り返します

別のアイデア:

prevMonthDate = startDate;
Repeat
    prevMonthDate = prevMonthDate - 1 day
Until (Month(prevMonthDate) < Month(startDate) Or Year(prevMonthDate) < Year(startDate))
    And (Day(prevMonthDate) <= Day(startDate))

これには、NSDateおよびNSDateComponentsを操作する必要があります。日付と時刻のプログラミングガイドを確認してください。

于 2013-01-25T21:05:38.127 に答える