这是plist或Xcode中的错误吗?

时间:2010-05-29 05:20:41

标签: iphone xcode datetime date plist

G'day All

如果您在Xcode的plist编辑器或Apple的独立plist编辑器中创建一个日期项,您将获得<date>2010-05-29T10:30:00Z</date>形式的某种形式,这是一个很好的ISO日期(由“Z”表示)。因为我在时区UTC +10时读到我的应用程序&amp;然后显示我下午8:30出来,仍然很好。但是,如果这是我的时区中的时间,那么它应该是<date>2010-05-29T10:30:00+10</date>(用我的时区偏移代替“Z”)。我试图在我的iPhone应用程序中阅读这些日期的所有尝试都被拒绝了,好像它的格式错误一样。在Apple的编辑器中编辑带有这样日期的plist,将“+10”更改为“Z”而不调整时间。

其他人认为我认为这是plist或Xcode中的错误是正确的吗?我的感觉是ISO日期和时间的实施在plist中的时间不完整。

干杯,佩德罗:)

1 个答案:

答案 0 :(得分:1)

这也不是一个错误。在CoreFoundation(和Foundation)中,所有日期都在Zulu时间中表示,这就是为什么它们以这种方式序列化的原因。然后根据希望显示日期的设备的时区格式化日期以供显示。虽然这是一个ISO日期字符串,但CoreFoundation / Foundation的唯一有效时区是Zulu时间。

如果由于某种原因,您需要跟踪生成任何给定日期的时区,则应将其作为单独的属性进行跟踪。如果您需要从其他地方编写XML属性列表,则必须先将日期转换为zulu然后将其写出(尽管文档明确指出这些密钥仅用于调试辅助/可读性,并且可能在将来更改)。这使得plists成为在两个Cocoa / CoreFoundation应用程序之间序列化数据的一种不错的方式,但是在Cocoa / CoreFoundation应用程序和其他应用程序之间串行化数据的方式却不太合适。