NSDate 到 NSString 的无损转换,反之亦然
Lossless conversion of NSDate to NSString and vice versa
我有一个 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"]];
但这会导致格式丢失和妥协:
Jul 13, 2015
如何将 NSDate 转换为 NSString 并返回,最终得到准确的原始 NSDate?
您仅使用反映用户偏好的日期(而非时间)样式来格式化原始 NSDate
,并且您仅使用日期、月份和年份来格式化检索到的 NSDate
,即 "dd-MM-yyyy"。你应该保持你的 NSDateFormatter
s 以保持原始格式。
两者都改变
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
和
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
到
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
获取并保留完整的日期和时间格式。
NSDate 存储自参考日期以来的秒数。如果您仅使用 iOS 个应用程序。然后你调用一个方法返回那个秒数作为一个 NSTimeInterval 这是一个数字,然后你存储这个数字。这意味着绝对不会丢失信息。您的数据将以高于微秒的精度返回。
如果数据必须由不同的设备而不是 运行 iOS 读取,那么还有另一种方法返回自 1970 年 1 月 1 日以来的秒数。这是一种非常标准的格式,任何OS应该可以搞定。
存储数字而不是字符串似乎要好得多。
我有一个 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"]];
但这会导致格式丢失和妥协:
Jul 13, 2015
如何将 NSDate 转换为 NSString 并返回,最终得到准确的原始 NSDate?
您仅使用反映用户偏好的日期(而非时间)样式来格式化原始 NSDate
,并且您仅使用日期、月份和年份来格式化检索到的 NSDate
,即 "dd-MM-yyyy"。你应该保持你的 NSDateFormatter
s 以保持原始格式。
两者都改变
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
和
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
到
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
获取并保留完整的日期和时间格式。
NSDate 存储自参考日期以来的秒数。如果您仅使用 iOS 个应用程序。然后你调用一个方法返回那个秒数作为一个 NSTimeInterval 这是一个数字,然后你存储这个数字。这意味着绝对不会丢失信息。您的数据将以高于微秒的精度返回。
如果数据必须由不同的设备而不是 运行 iOS 读取,那么还有另一种方法返回自 1970 年 1 月 1 日以来的秒数。这是一种非常标准的格式,任何OS应该可以搞定。
存储数字而不是字符串似乎要好得多。