iphone - 将 NSString 转换为日期错误

标签 iphone python objective-c ios cocoa-touch

我在将字符串转换为日期时遇到一个奇怪的问题:

NSString *goodDateString = @"2012-06-28 16:08:56.871000";
NSString *badDateString = @"2012-06-28 16:11:17.999771";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[formatter setTimeZone:timeZone];

NSDate *goodDate = [formatter dateFromString:goodDateString];
NSDate *badDate = [formatter dateFromString:badDateString];

NSAssert(goodDate, @"date is nil"); //passes this test
NSAssert(badDate, @"date is nil"); //fails this test

由于某种原因,当我尝试将 badDateString 转换为日期时,它返回 nil。我不知道为什么。日期字符串有问题吗?

编辑:字符串来自 Python 服务器。我在此日期使用 dateString = date.strftime('%Y-%m-%d %H:%M:%S.%f'):2012-06- 28 16:11:17 返回 2012-06-28 16:11:17.999771 ,上面的日期格式化程序无法解析它。任何Python人都知道我如何将日期的最后部分限制为小数点后3位而不是6位?

最佳答案

看起来这可能是一个错误。这与SSS这一事实有关。将小数秒 999771 向上舍入到下一个整秒,并且由于某种原因导致格式失败。如果将秒小数部分更改为 999499 ,它会起作用,但简单地将其更改为 9995 会导致它失败。我会考虑提交 bug report并将其添加到 Open Radar 。同时,只需编写代码来截断超过 3 位的秒小数部分即可。

关于iphone - 将 NSString 转换为日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249249/

相关文章:

ios - 根据单击的按钮更改内容?

c++ - Objective-C block 、C++ 变量和异步代码

iphone - iPhone 中的 NSNotification

ios - 将 NSPredicate 应用于字典 IOS 内的数组

迭代从 1 开始的范围的 Pythonic 方法

python - 验证一对多模型。parent 不是 self

python - 用于 Python 3.x 的 MySQL-db 库?

objective-c - 寻找合适的词汇数据库来构建C结构

iphone - 使用 iPhone SDK SSH 连接到 Mac 进行远程登录

iphone - 如何使用 objective-c 中的代码保存视频?