由于plist是xml,也就是文本,所以当一个NSDate对象写入plist时,结果是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<date>2011-04-01T02:09:15Z</date>
</plist>
我想直接获取该字符串(011-04-01T02:09:15Z
),而不需要所有周围环境。必须有一种比以下更明智的方法:
NSString *xmlRepresentationOfCurrentDate = [[[[[[[NSString alloc] initWithData:[NSPropertyListSerialization dataFromPropertyList:self format:kCFPropertyListXMLFormat_v1_0 options:0 error:NULL] encoding:NSUTF8StringEncoding] autorelease] componentsSeparatedByString:@"<date>"] objectAtIndex:1] componentsSeparatedByString:@"</date>"] objectAtIndex:0];
让事情变得复杂的是,上面的表示是 GMT,并且显然时区是在创建 NSDate 对象期间设置的。我看到的上述代码的替代方法是获取 GMT 偏移量,在 dateWithTimeInterval:sinceDate: 方法中使用它来获取 GMT 日期,然后使用 NSDateFormatter 来获取 GMT 日期。写出上面的字符串。然而,因为这会带来更多的开销。
有什么方法可以获取该 xml 字符串吗?
最佳答案
如果您确实要创建仅包含单个日期的属性列表,那么您发布的代码似乎是正确的方法。我可以理解您可能会觉得这有点麻烦,但您始终可以将其粘贴到 NSDate 上类别中的方法中,以便您可以直接从属性列表格式读取或写入日期。
关于iphone - 如何以编程方式获取 NSDate plist 表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508572/