【问题标题】:Error with formatting time in objective-c在objective-c中格式化时间错误
【发布时间】:2014-06-13 19:51:26
【问题描述】:

我正在尝试格式化从 RSS 提要中提取的博客文章的日期,以显示在表格单元格中。我将字符串“dateString”设置为等于从 XML 解析器接收到的日期并记录结果。然后,我将日期转换为新格式,将其记录到控制台,然后我收到“null”。作为回报,我的时间间隔为 0,并在我的单元格中显示“秒前”。我认为我的日期格式可能存在错误,但我检查了很多来源。

NSString *dateString = nil;
dateString = [datearray objectAtIndex:indexPath.row];
NSLog(@"Date Posted: %@", dateString);//Log date posted
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSDate *date = [dateFormat dateFromString:dateString];
NSLog(@"New Date: %@", date);//Log date posted
NSTimeInterval timeInterval = [date timeIntervalSinceNow];
NSLog(@"Time interval %f", timeInterval);
NSString *newTime = [timeIntervalFormatter stringForTimeInterval:timeInterval];
NSLog(@"New Time %@", newTime);
cell.dateLabel.text = [NSString stringWithFormat:@"%@", newTime];

控制台日志:

2014-06-13 15:43:41.555 Cazenovia High School[13489:60b] Date Posted: Thu, 22 Aug 2013 13:33:44 +0000
2014-06-13 15:43:41.556 Cazenovia High School[13489:60b] New Date: (null)
2014-06-13 15:43:41.557 Cazenovia High School[13489:60b] Time interval 0.000000
2014-06-13 15:43:41.558 Cazenovia High School[13489:60b] New Time seconds ago

编辑: 添加了以下几行,但仍然没有变化...

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormat setLocale:locale];

【问题讨论】:

  • 尝试将日期格式化程序的语言环境设置为 en_US_POSIX 的特殊语言环境。
  • @rmaddy 我做了上面的编辑,仍然没有改变。
  • 在我这边,这是控制台日志在复制和粘贴代码后所保存的内容:New Date: 2013-08-22 13:33:44 +0000Time interval -25591284.694682。这对我来说是正确的。实际的locale 是什么?
  • @holex 添加了我的控制台的图像。我当地是美国东部。我已经清理了项目和构建文件夹,并在项目管理器中删除了派生数据,因此错误不是来自缓存信息。
  • @holex 我的项目可以在这里找到:github.com/rileylloyd24/Cazenovia

标签: objective-c date nsdate nsdateformatter ios7.1


【解决方案1】:

运行项目后就很清楚了,因为dateString 的尾部似乎多了一个换行符

从技术上讲,您正在使用的字符串是"Thu, 22 Aug 2013 13:33:44 +0000\0x0a",这就是解析器无法使用该格式化程序处理它的原因。


我已将格式化程序修改为EEE, dd MMM yyyy HH:mm:ss ZZZ\n,它现在可以正常工作,这就是我的控制台的外观:

【讨论】:

    猜你喜欢
    • 2011-03-13
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多