新手在这里尝试修改苹果提供的“日期单元”示例代码用于学习目的,并且在格式化日期方面遇到了麻烦。我有一个tableView,在第1行(datePickerModeDateAndTime),第2行(pickerModeDate),第3行(pickerModeTime)中有三个单独的datePicker。现在,我正在努力从第一个选择器(dateAndTime)中获取值,以便我以后可以访问它。我在tableView单元格的详细信息中以“2013年9月20日,下午12:12”的形式显示了所选日期。我正在尝试获取详细信息的值,并将“NSDate日期”和所选时间之间的差异写入DD中的应用程序文档目录:HH:MM:SS剩余,以便我可以设置计时器另一个视图开始倒计时到选定的日期/时间,并在UILabel中显示计时器计数。当选择器最初加载到屏幕时,我将日期写为'2013-09-20 18:12:33 +0000',但在组件更改后,日志显示为'0:00:00:-10'。所以我已经部分地做了我想做的事情,但是没有成功地获得正确的约会。谢谢!
if(self.datePickerIndexPath.row == 1){
targetedDatePicker.datePickerMode = UIDatePickerModeDateAndTime;
self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[self.dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSDate *selected = [NSDate dateWithTimeIntervalSince1970:[self.pickerView.date timeIntervalSince1970] - 1];
self.deadlineCounter = [self.formatter stringFromDate:selected];
NSLog(@"selected is: %@", selected);
NSDate *todaysDate = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSDayCalendarUnit | NSMinuteCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dateComparisonComponents = [gregorian components:unitFlags
fromDate:todaysDate
toDate:selected
options:NSWrapCalendarComponents];
NSInteger days = [dateComparisonComponents day];
NSInteger hours = [dateComparisonComponents hour];
NSInteger minutes = [dateComparisonComponents minute];
NSInteger seconds = [dateComparisonComponents second];
self.DeadlineCounter = [NSString stringWithFormat:@"%ld:%02ld:%02ld:%02ld",
(long)days,
(long)hours,
(long)minutes,
(long)seconds];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *deadline = [NSString stringWithFormat:@"%@/deadline.txt", documentsDirectory];
NSInteger success = [NSKeyedArchiver archiveRootObject:selected toFile:deadline];
NSLog(@"success is: %d",success);
NSLog(@"deadline.txt was written successfully with these contents %@,", self.deadlineCounter);
targetedDatePicker.minimumDate = [NSDate date];
targetedDatePicker.maximumDate = [todaysDate dateByAddingTimeInterval:604800];
}
基本上,如果用户从日期选择器中选择“2013年9月25日,下午2:25”,我想写字符串,以便可以创建倒数计时器,在另一个视图中显示,并设置为关闭以及所选的日期和时间。 (我已经在正确的控制器上读取和读取日期,并且timerLabel以“0:00:00:00”的形式显示日期,但这是错误的数字)
答案 0 :(得分:1)
试试这段代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM' 'dd','yyyy' 'HH':'mm' a"];
[dateFormatter setAMSymbol:@"AM"];
[dateFormatter setPMSymbol:@"PM"];
NSDate *dateFromString = [dateFormatter dateFromString:uploadDate];