【问题标题】:convert string data " 03:12:00 May 06, 2014 MDT" into nsdate " 03-05-2014 " in ios在 ios 中将字符串数据“03:12:00 May 06, 2014 MDT”转换为 nsdate“03-05-2014”
【发布时间】:2014-05-09 11:59:26
【问题描述】:

我的日期类似于"payment_date" = "03:12:00 May 06, 2014 MDT";
但我想把这些数据转换成NSDate,比如"06-05-2014"

请帮帮我, 不知道怎么处理..

我从Converting NSString to NSDate (and back again)得到了答案

 __block NSDate *detectedDate;

//Detect.
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
[detector enumerateMatchesInString:t_date
                           options:kNilOptions
                             range:NSMakeRange(0, [t_date length])
                        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{ detectedDate = result.date;

    NSDate *d=result.date;

}


 ];

【问题讨论】:

标签: ios objective-c


【解决方案1】:

编辑

NSString *str = @"03:12:00 October 06, 2014 MDT";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[df setDateStyle:NSDateFormatterLongStyle];

str = [str substringFromIndex:9];
NSDate *date = [df dateFromString:[str substringToIndex:[str length] -3]];
[df setDateFormat:@"dd-MM-YYYY"];
NSLog(@"%@",[df stringFromDate:date]);

【讨论】:

  • 此代码忽略给定的时区“MDT”。并且使用固定范围 (9, 13) 的子字符串不是最好的主意。如果月份的字母超过三个怎么办?
  • @MartinR :其实我是根据问题的要求给出的解决方案。
  • 好吧,它转换了字符串“03:12:00 May 06, 2014 MDT”,但它失败了“03:12:00 October 06, MDT”......
  • @MartinR 先生,您是绝对正确的。当我的日期从“四月”或其他月份开始时,我的应用程序崩溃了......
  • @MartinR & Darshan_Ethan :您现在可以查看我的代码。快乐的编码。 :)
猜你喜欢
  • 2012-03-24
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
相关资源
最近更新 更多