Cần một UIDatePicker với ngày tối đa và tối thiểu cụ thể và thời gian. Hiện tại NSDatePicker.minimumDate và .maximumDate xuất hiện để chỉ xem xét ngày tháng. Cách thích hợp để xử lý điều này là gì?Giá trị tối thiểu và tối đa của UIDatePicker có thể bao gồm thời gian không?
5
A
Trả lời
7
NSDates chứa cả ngày và giờ. Từ tài liệu:
Đối tượng NSD đại diện cho một điểm trong thời gian.
Ví dụ dưới đây có ngày hiện tại và thời gian như giá trị tối thiểu và thời gian một tiếng đồng hồ từ nay như giá trị lớn nhất (để kiểm tra nó chỉ cần thả nó vào viewDidLoad của bất kỳ UIViewController):
// 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];
Bạn có thể đọc thêm về NSDate trên Dev Center.
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]];
Cảm ơn bạn Paulo. Có, tôi nhận thức được các đối tượng ở trên và của tôi và các đối tượng NSDate tối đa chứa thời gian nhưng UIDatePicker chỉ thiết lập các ranh giới theo ngày tháng. Nói cách khác, nếu tôi đặt tâm trí đến ngày hôm nay lúc 8 giờ sáng, nó ngăn cản tôi thiết lập ngày sang ngày hôm qua nhưng tôi vẫn có thể chọn một thời gian trước đó ... 6am chẳng hạn. – CBGrey
Điều đó rất lạ. Nếu bạn thay đổi minDate thành NSDate một vài giờ trước đó, bạn sẽ không thể chọn thời gian trước đó. Điều gì xảy ra trong trường hợp của tôi khi tôi chọn 6 giờ sáng là người chọn hoạt ảnh trở lại thời gian hợp lệ tối thiểu 8 giờ sáng. Bạn có mẫu mã không? –
Tôi rất vui khi biết nó hoạt động theo cách tôi nghĩ. Tôi không hài lòng khi nghĩ rằng tôi gặp sự cố trong mã của tôi :) Hãy để tôi xem xét và xem liệu tôi có thể lấy mẫu có liên quan ra không. Cảm ơn vì sự giúp đỡ tiếp tục của bạn. – CBGrey