0

我想从用户那里收集一个日期,将其转换为 unix 纪元时间,并使用该纪元时间戳来替换我的代码中 dateWithTimeIntervalSince1970: 之后的时间戳。非常感谢任何帮助,谢谢!

-(void)updatelabel{
    NSCalendar *Calender = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
    int units = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *components = [Calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
    [dateLabel setText:[NSString stringWithFormat:@"%d%c  %d%c  %d%c  %d%c", [components day], 'd', [components hour], 'h',   [components minute], 'm', [components second], 's']];  
}


- (void)viewDidLoad {
    [super viewDidLoad];
    destinationDate = [NSDate dateWithTimeIntervalSince1970:1356088260];
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updatelabel) userInfo:nil repeats:YES];
}
4

1 回答 1

1

如果您询问如何从用户那里收集日期,最简单的方法是使用 UIDatePicker。假设您正在使用 Storyboard 或 NIB,您将从对象库中拖动控件并将其“Value Changed”事件与操作方法连接起来。

UIDatePicker

在您的操作方法中,您可以将日期获取为:

- (IBAction)dateSelected:(UIDatePicker *)picker {
    NSDate *selectedDate = picker.date;
    // ...
}

相反,如果您有来自用户的 NSString,则可以使用 NSDateFormatter 将字符串转换为 NSDate:

NSString *usersDateStr = @"12/01/2012" // this would be retrieved from the user.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"MM/dd/yyyy";
NSDate *selectedDate = [formatter dateFromString:usersDateStr];

无论哪种方式,一旦你有一个日期对象,如果需要,你可以将它转换为一个 NSTimeInterval :

NSTimeInterval time = [selectedDate timeIntervalSince1970];
于 2012-12-03T02:37:45.433 回答