从 NSDate() 保存一个日期,在 CoreData 的末尾没有 +0000
Posted
技术标签:
【中文标题】从 NSDate() 保存一个日期,在 CoreData 的末尾没有 +0000【英文标题】:Save a date from NSDate() without +0000 at the end in CoreData 【发布时间】: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
没有任何时区信息。事实上,它没有任何天、月或年的概念。或者类似的东西。它纯粹是一个时间点。当您将其打印出来时,您的计算机将使用您当前的日历将其呈现为一个字符串,然后显示该字符串。
【参考方案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。忽略您的评论。以上是关于从 NSDate() 保存一个日期,在 CoreData 的末尾没有 +0000的主要内容,如果未能解决你的问题,请参考以下文章
谓词,从 NSDate 中按年份过滤,产生一个 nil 日期和一个讽刺的 Xcode 错误
搜索 CoreData 以匹配 NSDate - Swift