【问题标题】:NSDate returning nil for the NSDateFormatter set correctlyNSDate 为正确设置的 NSDateFormatter 返回 nil
【发布时间】:2014-03-11 21:17:19
【问题描述】:

如下所述,我正在获取 NSString 格式的日期。

输入:日期字符串 = 30/04/2013 04:49 PM

我正在应用下面提到的 NSDateformatter 格式来将此 NSString 转换为 NSDate 。

格式:dateFormat= dd/MM/yyyy hh:mm a

我仍然将日期转换为 Nil。请帮忙,因为我不理解这个问题。这是我的代码 sn-p 来解释我在实用程序函数中所做的事情。

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  [dateFormatter setDateFormat:dateFormat];
  NSDate *date = [dateFormatter dateFromString:dateString];
  return date;

【问题讨论】:

  • 使用相同的日期格式化程序来格式化(即 stringFromDate)[NSDate date] 并打印结果。它是否完全按照您的格式显示?
  • (您可能会被日期格式化程序locale "feature" 所困扰。)

标签: objective-c nsstring nsdate nsdateformatter


【解决方案1】:

试试这个....

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDate *date = [dateFormatter dateFromString:@"30/04/2013 04:49 PM"];
NSLog(@"%@",date);

【讨论】:

  • 为什么设置时区会影响结果是否为零?
  • 不,因为 UTC 时区是全球通用的时间标准。
  • 但是他没有得到错误的结果,他得到的结果是 nil。设置时区(否则默认为本地 TZ)如何防止出现 nil 结果?
  • 这对于 OP 来说是不正确的。
猜你喜欢
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多