在CoreData的末尾,从NSDate()中保存日期而不使用+0000

时间:2015-01-08 18:46:38

标签: ios date core-data swift tableview

我搜索了帖子,但没有找到我可以使用的东西......

我尝试做的是:我想在CoreData中保存一个日期(作为NSDate),但没有像+0000这样的时区标识符。原因是,我稍后使用日期作为TableView中的排序路径/标题,结果看起来不太好用+0000。 我无法从CoreData转换日期,因为我使用" titleForHeader"与NSFetchedResultsController一起使用,所以我没有机会事先转换它... 或者甚至可以使用" dd-MM-yyyy / HH:mm"等格式保存NSDate。但仍然是NSDate()? 我想在Swift中做所有这些!

感谢您的帮助......

3 个答案:

答案 0 :(得分:3)

NSDate不包含任何时区信息,您需要将NSDate保存在Core Data中,然后使用NSDateFormatter对其进行格式化以便显示。

答案 1 :(得分:1)

如果没有它,就无法保存NSDate。只有当你要保存为NSString时,在这种情况下你可以使用这样的东西:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];

OR

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];

然后将字符串保存为:

[dateFormatter stringFromDate:YOUR_NSDATE_VAR];

干杯。

答案 2 :(得分:0)

这对我有用:

 NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"MaxDate"];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
    NSString *stringFromDate = [formatter stringFromDate:date];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat =@"yyyy-MM-dd'T'HH:mm:ss";
    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:stringFromDate];
    dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString *newDateString = [dateFormatter stringFromDate:dateFromString];
    NSLog(@"%@", newDateString);