Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSDateFormatter dateFromString转换_Objective C_Nsdate_Nsdateformatter - Fatal编程技术网

Objective c NSDateFormatter dateFromString转换

Objective c NSDateFormatter dateFromString转换,objective-c,nsdate,nsdateformatter,Objective C,Nsdate,Nsdateformatter,我在将NSString对象转换为NSDate时遇到问题。以下是我想做的: 我正在从internet下载RSS消息。我用NSXMLParser解析了整个消息。在那之后,我有一些部分,比如,或保存到特定的NSString。我想将元素(包括RSS消息的发布日期)转换为NSDate,这样我就可以对它执行一些操作,比如对日期对象执行一些操作(例如排序、在时钟上显示等等)。以下是我儿子的样子: “2013年9月25日星期三12:56:57 GMT” 我尝试通过以下方式将其转换为NSDate: *//theS

我在将NSString对象转换为NSDate时遇到问题。以下是我想做的: 我正在从internet下载RSS消息。我用NSXMLParser解析了整个消息。在那之后,我有一些部分,比如,或保存到特定的NSString。我想将元素(包括RSS消息的发布日期)转换为NSDate,这样我就可以对它执行一些操作,比如对日期对象执行一些操作(例如排序、在时钟上显示等等)。以下是我儿子的样子:

“2013年9月25日星期三12:56:57 GMT”

我尝试通过以下方式将其转换为NSDate:

*//theString is NSString containing my date as a text
NSDate *dateNS = [[NSDate alloc] init];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss ZZZ"];
dateNS = [dateFormatter dateFromString:theString];*
但是,在执行上述代码之后,dateNS始终显示为(null)

我的问题很简单:将日期格式如下的NSString转换为NSDate对象的正确方法是什么

顺便说一下,我已经看过这个网站了
似乎有很多方法可以格式化特定的日期,但我找不到我做错了什么是无用的,您不需要分配任何日期对象

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
NSLog(@"%@", [dateFormatter dateFromString:@"Wed, 25 Sep 2013 12:56:57 GMT"]);

正确输出日期,是否确定字符串
不是
nil

您的问题是您的日期格式化程序与日期字符串不一致: 您应该将日期格式化程序设置为与日期字符串相同的格式

我的例子是:

//将字符串转换为日期

    NSString *beginString = @"Sat, 30 Dec 2013 14:45:00 EEST";
    //beginString = [beginString stringByReplacingOccurrencesOfString:@"EEST" withString:@""];
    //beginString = [beginString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]];
    [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Helsinki"]];
    [dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"];
    dateFromString = [dateFormat dateFromString:beginString];

    //NSLog(@"Begin string: %@", beginString);

    //NSLog(@"not formated: %@", dateFromString);

    // Convert Date to string

    [dateFormat setTimeZone:[NSTimeZone localTimeZone]];
    [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ru_RU"]];
    [dateFormat setDateFormat:@"dd MMMM yyyy"];
    myStrDate = [dateFormat stringFromDate:dateFromString];
    [currentTitle setPubDate:myStrDate];

您需要24小时格式的
HH
。好的,它现在就可以工作了。我没有设置时区和区域设置(顺便说一下,我仍然不知道为什么要这样做)。但我遇到了另一个问题:在将日期从字符串转换为NSDate后,它在时间上移动了3个小时,例如01.01.2013 11:30->01.01.2013 14:30。为什么?这是因为错误的LocaleIdentifier(我在波兰,我将LocaleIdentifier设置为en_GB-我在将其更改为pl_pl时遇到一些问题。时区更改为欧洲/华沙)。