我有一个NSDate:
2015-07-13 16:04:01 +0000
我希望将其转换为NSString,以便能够将其存储在服务器上,然后从服务器读取并转换回NSDate,而不会丢失任何细节。
我一直在查看其他帖子,建议按以下方式进行:
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *dateString = [dateFormatter stringFromDate:date];
反之亦然:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [dateFormatter dateFromString:message[@"date"]];
但这会导致格式的丢失和妥协:
2015年7月13日
如何将NSDate转换为NSString并返回,最终返回确切的原始NSDate?
答案 0 :(得分:1)
您只能使用反映用户首选项的日期(非时间)样式格式化原始NSDate
,并且您只需将检索到的NSDate
格式化为日,月和年,即" dd-MM-yyyy"。您应该保持NSDateFormatter
的一致性,以保持原始格式。
更改两者
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
和
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
到
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
获取并保留整个日期和时间格式。
答案 1 :(得分:1)
NSDate存储自参考日期以来的秒数。如果您只使用iOS应用程序。然后你调用一个方法返回该秒数作为一个数字的NSTimeInterval,然后存储该数字。这意味着绝对不会丢失任何信息。您的数据将以超过微秒的精度返回。
如果数据必须由不运行iOS的不同设备读取,那么还有另一种方法返回自1970年1月1日以来的秒数。这是一种非常标准的格式,任何操作系统都应该能够处理。
存储数字而不是字符串似乎要好得多。