上个月的同一天ios

时间:2013-01-25 19:59:11

标签: ios ipad nscalendar

使用NSCalender有什么办法可以在上个月的同一天使用吗?

我正在使用日历,当用户点击我想要移动到上个月的按钮时,会向用户显示像iPad日历的1个月,但应该选择与之前相同的日期。

我想做的就是

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

但是,当我从31个月的月份移动到30天,而选定的日期是31天时,这会产生问题。

我能够找到Android的例子而不是iOS。

android example

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

查看this link

这是关于增加一个月,但你可以做同样的减法。

更改

[dateComponents setMonth:1];

[dateComponents setMonth:-1];

答案 1 :(得分:1)

似乎没有明显的“正确”答案,也没有“内置”答案。

由于克里斯的“简单”想法可能导致无效日期,您可能必须处理边缘情况。

处理日月年的伪代码:

  1. 如果月份= 12月从第1天(第1年)开始,否则 day-(month-1)-year [using dateComponents]
  2. 检查这是否是有效日期(使用this question
  3. 中的NSDateFormatter
  4. 重复减去一天,直至达到有效日期
  5. 另一个想法:

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

    这需要使用NSDate和NSDateComponents,请查看Date and Time Programming Guide