【问题标题】:Which dateFormat should I choose while converting NSString to NSDate?将 NSString 转换为 NSDate 时我应该选择哪种 dateFormat?
【发布时间】:2015-01-20 14:42:46
【问题描述】:

我有一个像 @"2014-11-27T10:54:08.185Z" 这样的 NSString

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'hh':'mm':'ss'.'SSS'Z'"];
NSDate * date =  [dateFormatter dateFromString:self.creationTime];

我尝试了很多不同的格式化字符串,但日期总是为零。

或者这里还有其他问题吗?

【问题讨论】:

  • 欢迎来到 SO!我刚刚试过你的代码,它可以工作。你确定self.creationTime 不为零吗? (附言至少 date 在我的情况下不是零。)
  • 'HH'?好像是24小时制的?
  • FreeNickname,你知道,它可以使用像 @"2014-11-27T10:54:08.185Z" 这样的静态字符串,但它不能使用 self.creationTime。虽然 self.creationTim 肯定不是零。好难过(
  • @Larme 是的!有效!!!非常感谢!!!

标签: ios xcode nsstring nsdate nsdateformatter


【解决方案1】:

您的日期字符串格式中的小时似乎是 24 小时格式。 所以你需要在dateFormat 中使用HH 而不是hh

More info

【讨论】:

    【解决方案2】:

    试试

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    
    [formatter setDateFormat:@"yyyy'-'MM'-'dd'T'hh':'mm':'ss'.'SSS'Z'"];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:self.creationTime];
    
    self.dateLabel.text = [formatter stringFromDate:date];
    

    【讨论】:

    • 实际上@larme 对我的问题发表了正确的评论)现在效果很好)
    【解决方案3】:
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
    NSDate *date = [dateFormatter dateFromString:@"2013-02-01T06:25:47Z"];
    NSTimeZone *pdt = [NSTimeZone timeZoneWithAbbreviation:@"PDT"];
    [dateFormatter setTimeZone:pdt];
    [dateFormatter setDateFormat:@"HH:mm:ss zzz"];
    [dateFormatter setDateFormat:@"K:mm a, z"];
    NSString * updated String = [dateFormatter stringFromDate:date];
    

    请试试这个...:)

    【讨论】:

    • 我不是 OP,但您的代码不适用于 OP 的字符串:@"2014-11-27T10:54:08.185Z"
    • 谢谢,但也没有用。日期仍然为零:-(
    猜你喜欢
    • 2016-09-01
    • 2011-04-24
    • 2017-04-23
    • 2021-09-11
    • 2014-12-06
    • 2014-06-26
    相关资源
    最近更新 更多