【问题标题】:Save a date from NSDate() without +0000 at the end in CoreData从 NSDate() 保存一个日期,在 CoreData 的末尾没有 +0000
【发布时间】:2015-01-08 18:46:38
【问题描述】:

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

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

感谢您的帮助...

【问题讨论】:

  • NSDate 开始时不包含时区信息。您到底想做什么,将NSDate 格式化为字符串?
  • 就像其他人所说的那样。 NSDate 没有任何时区信息。事实上,它没有任何天、月或年的概念。或者类似的东西。它纯粹是一个时间点。当您将其打印出来时,您的计算机将使用您当前的日历将其呈现为一个字符串,然后显示该字符串。

标签: ios date core-data swift tableview


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    没有它就不可能保存 NSDate。只有当你要保存为 NSString 并且在这种情况下你可以使用这样的东西:

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

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

    然后将字符串保存为:

    [dateFormatter stringFromDate:YOUR_NSDATE_VAR];
    

    干杯。

    【讨论】:

    • 是的,我知道如何格式化它,但我只是在寻找一种解决方案来按照我上面描述的方式完成它,看来我必须重构我的整个代码才能完成它......谢谢大家...
    • “没有它就不可能保存 NSDate...” 当然可以,因为它不是 NSDate 的一部分。正如您所描述的,只有在格式化日期时才会出现这种情况。 NSDate 从不包含它。
    【解决方案3】:

    这对我有用:

     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);
    

    【讨论】:

    • @EricAya。忽略您的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多