2014-09-22 43 views
0

假設我想在「星期五下午3:00」創建日期。在給定時間創建NSDate

我今天知道的是星期一(日= 1)。星期五是第6天。我知道我想要創建的小時數是15.

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setDay:6]; 
[comps setMonth:currentDate.month]; 
[comps setYear:currentDate.year]; 

NSCalendar *gregorian = [[NSCalendar alloc] 
           initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [gregorian dateFromComponents:comps]; 

這可能在某些情況下工作我猜。但是,如果星期五與今天不同,那麼不是。有沒有一個強大的解決方案,或者我必須手動計算我提到的邊緣案例?

編輯:我不知道該月份的日期或建議日期的年份。我知道今天的日子。我只知道擬議日期的那一天,而且這是從現在開始的那一天的下一個日期。所以,下個星期五下午三點從現在開始。

+1

僅供參考 - 週一爲2天,而不是1和'setDay'是每月的一天,而不是工作日。因此,將它設置爲「6」是本月的第6天,而不是星期五。 – rmaddy 2014-09-22 23:24:22

回答

1

我不知道我完全理解你所需要的,但你可以建立一個「字符串日期」並將其轉換爲NSDate的:

NSString *dateFormat @"MM/dd/yyyy hh:mm a"; 
NSString *myDateString = @"09/22/2014 16:30 pm"; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:dateFormat]; 
preselectedDate = [df dateFromString: myDateString]; 
+0

請參閱我的編輯。我不知道這是2014年9月22日。我只知道這是即將到來的星期五的下午3點。我知道,星期五的3點可能會在下個月或者下一年。 – soleil 2014-09-22 23:42:45

+0

明白了。在這種情況下,也許這是你需要的? http://stackoverflow.com/questions/12829705/programmatically-getting-the-date-next-sunday-at-5pm – 2014-09-22 23:44:31