2010-03-14 14 views

回答

7

NSDates包含日期和時間。從文檔:

NSDate對象表示單個時間點。

以下示例有當前的日期和時間作爲最小值和一個小時的時間,從現在作爲最大值(以測試它只是將其拖放到任何的UIViewController的viewDidLoad中):

// Time right now 
NSDate *minDate = [NSDate new]; 
// One hour from now 
NSDate *maxDate = [[NSDate alloc] initWithTimeIntervalSinceNow:60*60]; 

UIDatePicker *picker = [UIDatePicker new]; 
[picker setDatePickerMode:UIDatePickerModeDateAndTime]; 
[picker setMinimumDate:minDate]; 
[picker setMaximumDate:maxDate]; 
[[self view] addSubview:picker]; 
[super viewDidLoad]; 

您可以在Dev Center上閱讀更多關於NSDate的信息。

+0

謝謝Paulo。是的,我意識到上述情況,並且我的mindate和maxdate NSDate對象包含時間,但UIDatePicker只是按日期設置邊界。換句話說,如果我在上午8點設定今天的日期,它會阻止我將日期設置爲昨天,但我仍然可以選擇早一點的時間,例如上午6點。 – CBGrey 2010-03-15 12:45:23

+0

這很奇怪。如果您提前幾個小時將minDate更改爲NSDate,則您應該無法選擇較早的時間。當我選擇6點時,在我的情況下會發生什麼,是選擇器回到最低有效時間8點。 你有代碼示例嗎? – 2010-03-15 21:09:22

+1

我很高興聽到它按我認爲應該的方式工作。我很不高興認爲我的代碼中存在問題:)讓我回顧一下,看看我是否可以將相關示例提取出來。感謝您的持續幫助。 – CBGrey 2010-03-15 21:13:33

1
NSDateFormatter *FormatDate = [[[NSDateFormatter alloc] init] autorelease]; 
[FormatDate setDateFormat:@"MMMM d y"]; 

NSString *date1=[FormatDate stringFromDate:[theDatePicker date]]; 
NSString *today=[FormatDate stringFromDate:[NSDate date]]; 
NSTimeInterval secondsPerDay = 24 * 60 * 60; 
NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay]; 
NSString *tommorow=[FormatDate stringFromDate:tomorrow]; 
[pickerViewPopup dismissWithClickedButtonIndex:0 animated:YES]; 
if ([date1 isEqualToString:today]||[date1 isEqualToString:tommorow]) { 
    NSDateFormatter *FormatDate = [[[NSDateFormatter alloc] init] autorelease]; 
    [FormatDate setDateFormat:@"MMM dd,yyyy"]; 
    currentdate.text = [FormatDate stringFromDate:[theDatePicker date]];