编辑:基本上,我希望在 UTC 时间,最好通过 ISO-8601 执行此操作:
- Python:datetime.datetime ---> ISO-8601 字符串
- Python:ISO-8601 字符串 ---> datetime.datetime
- Obj-C: NSDate ---> ISO-8601 NSString
- Obj-C: ISO-8601 NSString ---> NSDate
这看起来应该很简单,但我似乎无法弄明白。
Python 代码,转换为字符串:
>>> import datetime
>>> datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S %z")
'2012-03-08 00:07:31 '
请注意,时区信息 %z 被打印为一个空字符串,因为 utcnow() 返回一个naive 日期时间对象。我如何将它变成一个感知并让它像下面这样打印?
'2012-03-08 00:07:31 +0000'
在 Obj-C 方面:
// This fails and prints (null) since the timezone is missing.
NSString *pythonDate1 = @"2012-03-07 23:51:58 ";
NSDate *objCDate1 = [NSDate dateWithString:pythonDate1];
NSLog(@"%@", objCDate1);
// This works, manually adding in the "+0000".
NSString *pythonDate2 = @"2012-03-07 23:51:58 +0000";
NSDate *objCDate2 = [NSDate dateWithString:pythonDate2];
NSLog(@"%@", objCDate2);
打印输出:
2012-03-07 19:14:47.848 Untitled 3[3912:707] (null)
2012-03-07 19:14:47.849 Untitled 3[3912:707] 2012-03-07 23:51:58 +0000
我也不太确定如何从 NSDate 返回到 datetime.datetime 对象。任何帮助是极大的赞赏! :)
请您参考如下方法:
使用 datetime.now(tz)而不是 datetime.utcnow() 会给你一个有意识的日期时间对象。
