【问题标题】:Get Date from String '2011-08-16T19:03:21.000Z'从字符串“2011-08-16T19:03:21.000Z”获取日期
【发布时间】:2011-08-16 19:48:37
【问题描述】:

我向数据库询问对象的日期。我得到一个这样的字符串:2011-08-16T19:03:21.000Z(这是另一个字符串:2011-08-12T02:13:16.000Z);

编辑:这是我在 2011 年 8 月 16 日下午 12:51 制作的另一个用于测试目的:2011-08-16T19:51:24.000Z

我想将此日期转换为另一种格式以供显示。这种格式将来可能会改变,所以我不想直接进行字符串操作。最好的办法是将其转换为 NSDate,然后返回正确格式的字符串。但是,我这辈子都无法将该死的字符串放入 NSDate。

- (NSString *)makeDateStringReadable:(NSString *)dateString {
    NSLog(@"The String: %@", dateString);
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.zzzz"];
    NSDate *theDate = [formatter dateFromString:dateString];
    NSLog(@"The Date: %@", theDate);
    [formatter setDateFormat:@"yyyy-MM-dd"];
    NSString *finalString = [formatter stringFromDate:theDate];
    [formatter release];
    return finalString;
}

传入原始字符串,然后注销,但“日期:”日志始终显示为空。我假设格式不正确......但我无法让它正确。我也尝试使用this 作为参考。

我可以得到 DateFormatter 大师的帮助吗?非常感谢!

【问题讨论】:

  • 你可以在这里找到一个有效的实现:devbytom.blogspot.fr/2011/04/…
  • 工作格式:'[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];'从下面的评论复制。

标签: iphone objective-c ios nsdateformatter date-format


【解决方案1】:

一个问题(但可能不是 问题)是zzzz 不是000Z 的正确规范。 RFC 3339 时间戳的结尾不是四字符时区规范,而是小数秒加上文字“Z”。所以尝试将zzzz 更改为SSS'Z'

【讨论】:

  • 感谢您的快速回复。我试过"[formatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.SSS'Z'"];",但它仍然为空。
  • 在玩了一些之后(并得到了朋友的帮助),我得到了它:'[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss. SSS'Z'"];'谢谢!
  • NSDateFormatter 是我在 iOS(和 Mac)上遇到的最慢的事情之一。它们的制造成本真的很高。如果您要制作 10,000 个,请记住这一点。您可以制作一个,然后在整个程序执行期间保留它。 (单例)。
  • 我正在处理一个 Web 应用程序,它只接受 yyyy-MM-dd HH:mm:ss.sss 格式的日期字段,但将日期发送回 int eh 格式 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' !!!我必须为每个方向设置一个专用的格式化程序!
猜你喜欢
  • 1970-01-01
  • 2020-01-20
  • 2012-01-06
  • 2020-03-27
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
相关资源
最近更新 更多