我正在获取这样的日期字符串表单邮件服务器。星期四,2009年12月31日14:32:15 +0580 我想将此日期字符串转换为日期。
这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSString *inputstring=@"Mon, 3 sep 2012 08:32:39 +0580";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
[dateFormatter setLenient:YES];
NSLocale *enUS = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:enUS];
NSDate *result = [dateFormatter dateFromString:inputstring];
NSLog(@"test==%@",result);
}
我的输出为null。
例外输出:2012-09-03 03:02:39 +0000
答案 0 :(得分:2)
第一个问题:您没有尝试读取字符串上的“Tue”。 (将“EEE”添加到格式的前面)
第二个也是更大的问题:+0580不是有效的时区。几年前有一个PHP错误错误地将IST(+0530)作为+0580返回。 +0580毫无意义。这意味着5小时80分钟。因此,您可以执行以下两项操作之一:在处理之前将+0580替换为+0530 或将日期格式化程序时区设置为IST并从字符串中删除+0580。
我看到你接受了另一个答案,但那个答案“有效”,因为它无法解析最后一部分而忽略了时区。我跑了然后 2013-07-09 08:32:38 +0000 (这与 2013-07-09 08:32:39 +0580 不一样)
删除已接受答案格式的+
会导致格式化程序正确解析,但由于时区无效,您将获得null
。将时区更改为+0530可得到 2013-07-09 03:02:39 +0000
答案 1 :(得分:1)
替换
[dateFormatter setDateFormat:@"d MMM yyyy HH:mm:ss ZZZ"];
与
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss zzzz"];
答案 2 :(得分:1)
只需将以下代码复制并粘贴到项目中并运行,即可查看结果
NSString *dateString = @"Tue, 9 Jul 2013 08:32:39 +0580";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MM yyyy hh:mm:ss +zzzz"];
NSDate *dateFromString;
dateFromString = [dateFormatter dateFromString:dateString];
NSLog(@"test==%@",dateFromString);
答案 3 :(得分:1)
@Raviteja Kammila使用以下代码作为日期格式,如2013-07-09 03:02:39 +0000
NSString *dateString = @"Tue, 9 Jul 2013 08:32:39 +0580";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MM yyyy HH:mm:ss +zzzz"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"final date : %@",date);