【问题标题】:How to convert an NString to an NSDate and then set the date to a UILabel如何将字符串转换为 NSDate,然后将日期设置为 UILabel
【发布时间】:2012-11-13 10:49:11
【问题描述】:

我需要将下面的字符串转换成可读性更好的格式:

NSString *deadlineFromTable = @"2012-11-13T22:59:00.000Z";

我想把它转换成 NSDate,所以我可以格式化它。

我尝试了以下操作,但是当我尝试将其设置为 UILabel(最后一行)时,将 NSString 分配给 NSDate 时出现不兼容的指针错误:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];

NSDate *dateFromString = [dateFormatter dateFromString:deadlineFromTable];
self.deadlineLbl.text = dateFromString;

感谢您的帮助。

【问题讨论】:

  • deadlineFromTable 是什么?
  • 它是来自 JSON 输出的字符串

标签: objective-c ios nsstring nsdate


【解决方案1】:

您需要使用 dateFormatter 两次。一次用于解析,一次用于格式化字符串。
您不能直接将日期指定为标签文本。

  1. 设置格式:yyyy-MM-dd'T'HH:mm:ss.Z 然后使用
    NSDate *date = [dateFormatter dateFromString:dedlineFromTable];
  2. 设置格式:dd-MM-yyyy 然后使用
    NSString *text = [dateFormatter stringFromDate: date];

【讨论】:

    【解决方案2】:

    你需要两个 dateFormatter。

    一个用于从您的输入字符串转换为日期,然后一个用于将该日期转换为您想要的标签格式。

    您还需要更改日期格式化程序的格式,使其与您的字符串匹配...

    NSDateFormatter *dateStringParser = [[NSDateFormatter alloc] init];
    [dateStringParser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.Z"];
    
    NSDate *date = [dateStringParser dateFromString:deadlineFromTable];
    
    NSDateFormatter *labelFormatter = [[NSDateFormatter alloc] init];
    [labelFormatter setDateFormat:@"dd-MM-yyyy"];
    
    self.deadlineLbl.text = [labelFormatter stringFromDate:date];
    

    应该可以的。

    【讨论】:

    • 感谢工作! :) 我不得不使用 [dateStringParser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.000Z"];日期格式“.000Z”在最后。
    • 你确定它有效吗?这段代码在我这边打印出(null)NSDateFormatter *dateStringParser = [[NSDateFormatter alloc] init]; [dateStringParser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.Z"]; NSDate *date = [dateStringParser dateFromString:@"2012-11-13T22:59:00.000Z"]; NSLog(@"%@", date);
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多