检索UIPickers字符串并转换为NSDate

时间:2011-09-05 21:54:16

标签: iphone

我的应用程序中有一个非常烦人的挑战。客户希望在3个独立的UIPickers中显示Days,Hours和Minutes - 这些值一起代表一个反复出现的事件。

所以我需要将这些值转换为NSDate,然后我可以使用它来设置警报并计算此事件之前的天数等。

如何将这些值转换并组合到正确的NSDate中的任何想法。

e.g。 @“周二”+“15”+“00”明天(2011年9月6日下午3点)等。

1 个答案:

答案 0 :(得分:-1)

使用以下方法将每个值合并为一个字符串:[NSString stringWithFormat:@“%s%d%d”,dayString,monthInt,yearInt]

然后使用NSDateFormatter .. 就像在这篇文章中一样:convert string to date


所以你的问题是你没有MONTH和YEAR的数据(甚至是一个预先的日子)。 你可以认为用户意味着本月和今年的某一天,但在所有情况下都不正确。

正确的NSDate需求(日,)月,年和时区 - 以及您现在从UIPickers获得的内容。

  

e.g。 @“周二”+“15”+“00”将于明天(2011年9月6日下午3点)

也可能是2011年9月13日下午3点,或2021年9月7日下午3点等。

除非您确定它始终是下一天,否则它将不是正确的日期!

在一个月的第一天,你选择一个星期一 - 然后可能有4或5个可能的星期一。 一年中的第一个月 - 可能的12个月。 然后几年..

但如果下一天可能“足够正确”: 获取今天的日期并获得您需要的字符串(月,年,时区)。

从今天开始循环,直到找到匹配的日期名称, 并检查你是否在同一年。

因此,如果您在一年的最后一天23:59选择日期名称+时间 - 下一个可能正确的日期是明年。 (NSDateComponents可用于获取有效日期并添加+1年等。)。

并不总是可以说服客户 - 但我会试着询问他们是否可以和不同的采摘者一起生活,这样他们就可以得到正确的约会对象。