2011-09-30 45 views
0

我使用NSDates作为NSDictionary的键,但对于键值编码,我需要一个字符串。重要的是,我需要它不改变跨操作系统或区域设置的表示。当我将它展示给用户时,我当然会使用NSDateFormatter,但在内部它必须始终保持一致。以字符串形式获得一致格式的最佳方式是什么?从NSDate获取一致的日期格式?

回答

2

使用NSDateFormatter并将时区指定为GMT,将本地指定为“en_US_POSIX”。

从苹果:Data Formatting Guide

如果你有固定格式的日期的工作,你应该首先设置 语言环境的日期格式,以适当的东西,为您的固定 格式。在大多数情况下,要选择的最佳语言环境是en_US_POSIX,这是一个 语言环境,专门设计用于产生美式英语结果 ,无论用户和系统首选项如何。

另一种方法是使用timeIntervalSince1970等方法将NSDate转换为NSTimeInterval,然后转换为hexascii值以用作键。 NSDate返回一个相对于绝对参考日期的时间值 - 即2001年1月1日格林尼治标准时间的第一个时刻。

+0

只需将时间间隔的十进制表示与“date_”相比,将其转换为十六进制的前缀更简单更有效。更有效,因为即使是十六进制数字也可以以十进制数字开头,我不确定它会作为KVC键使用。 –

+0

好点,谢谢。 – zaph