【问题标题】:String converson to date with unknown formate iphone字符串转换为日期未知格式的iphone
【发布时间】:2013-09-05 07:42:25
【问题描述】:

我有一个来自服务器的类似“2013-09-05T06:40:19Z”的日期字符串 我想把它转换成日期,格式应该和我的 iphone 一样。

如何做到这一点? 我什么时候这样做?

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];       
[dateFormatter1 setDateFormat:@"MMM dd yyyy"];       
[dateFormatter1 setLocale:[NSLocale currentLocale]];        
[dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]];       
NSDate *date =[dateFormatter1 dateFromString:time];
NSLog(@"%@",date)//getting null here 

我的日期为空。

【问题讨论】:

标签: iphone ios objective-c


【解决方案1】:
NSString *dateStr = @"2013-09-05T06:40:19Z";
NSString *outDateFormate = @"MMM dd yyyy";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[NSLocale currentLocale]];
    [dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *intime = [dateFormat dateFromString:dateStr];
    [dateFormat  setDateFormat:outDateFormate];
    NSString *dateWithNewFormat = [dateFormat stringFromDate:intime];

【讨论】:

    【解决方案2】:

    由于您以指定格式获取日期,因此您需要相应地定义日期格式化程序

     NSString *gameDateString = @"2013-09-05T06:40:19Z";
    
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
     dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];  
     [dateFormatter setLocale:[NSLocale currentLocale]];
     [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
    
     NSDate *gameDate = [dateFormatter dateFromString:gameDateString];
     NSLog@("** The date is %@",gameDate); 
    
       // Now convert date to string in the format which you required.
      [dateFormatter  setDateFormat:@"MMMM dd, yyyy"];
      NSString *dateString =  [dateFormatter stringFromDate:gameDate];
      NSLog@("** The date string is %@",dateString); 
    

    希望这会有所帮助。

    【讨论】:

    • @sundeep 很高兴它有帮助。如果不是太多工作,您可以将其标记为已接受的答案吗?
    • @Gyanendersing 我想要这样的格式 dateFormatter setDateFormat:@"hh:mm aa Today"];我可以这样做吗?如何做到这一点
    • 恐怕没有这种格式可用。你能更具体地说明你真正想要什么吗?我的意思是说你想要日期字符串,例如2013 年 9 月 5 日或 05/09/2013 或任何其他格式?
    【解决方案3】:
    NSString *str=@"2013-09-05T06:40:19Z";
    str=[[str stringByReplacingOccurrencesOfString:@"T" withString:@" "]stringByReplacingOccurrencesOfString:@"Z" withString:@""];
    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
    [dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
    [dateFormatter1 setLocale:[NSLocale currentLocale]];
    [dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]];
    NSDate *date =[dateFormatter1 dateFromString:str];
    [dateFormatter1 setDateFormat:@"MMM dd yyyy"];
    NSString *newDate=[dateFormatter1 stringFromDate:date];
    
    NSLog(@"%@",newDate)
    

    【讨论】:

    • newalloc & init 的关键字。将其用作变量名是一个非常糟糕的主意。
    • @Desdenova new 不是 obj-c 中的关键字,只是 NSObject 的方法名。不过,在 obj-c++ 中是这样。但是,您是对的,这是变量的坏名称
    • @medvedNick 感谢您的澄清。不知道它的细节。
    猜你喜欢
    • 2020-11-19
    • 2015-12-12
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多