Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Ios 如何从NSString获取NSTimeInterval?_Ios_Objective C_Nsdate_Nstimeinterval - Fatal编程技术网

Ios 如何从NSString获取NSTimeInterval?

Ios 如何从NSString获取NSTimeInterval?,ios,objective-c,nsdate,nstimeinterval,Ios,Objective C,Nsdate,Nstimeinterval,我正在尝试将以下字符串“2016-05-15T14:40:43.447”转换为NSDate,但其不是NSDateFormatter始终返回nil 这就是我目前正在做的 - (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate { if(!stringDate || ![stringDate length]) { return 0.0f; } static NSDateForma

我正在尝试将以下字符串“2016-05-15T14:40:43.447”转换为
NSDate
,但其不是
NSDateFormatter
始终返回
nil

这就是我目前正在做的

- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
    if(!stringDate || ![stringDate length]) {
        return 0.0f;
    }
    static NSDateFormatter *df = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        df = [NSDateFormatter new];
        [df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSS"];
    });
    NSDate *date = [df dateFromString:stringDate];
    // date is always returns nil.
    return [date timeIntervalSince1970];
}

我已尝试设置以下格式:

yyyy-MM-dd'T'hh:mm:ss.SSS
yyyy-MM-dd'T'hh:mm:ssz
yyyy-MM-dd'T'hh:mm:ss Z
yyyy-MM-dd'T'hh:mm:ss.SSS Z
yyyy-MM-dd'T'hh:mm:ss.SSS z
但没有一个成功

我也查过了,但没用

运气好吗?

试试这个代码

- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
        if(!stringDate || ![stringDate length]) {
            return 0.0f;
        }
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        df.timeZone = [NSTimeZone localTimeZone];
        df.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS";
        NSDate *date = [df dateFromString:stringDate];

        return [date timeIntervalSince1970];
    }

14:40:43
是24小时格式,大写H

yyyy-MM-dd'T'HH:mm:ss.SSS

你为什么要在那里停下来?是否需要是的,我曾经确保,
NSDateFormatter
只创建一次。无论如何,如果您在方法中创建dateformatter实例,则其范围将仅在方法中。因此,即使您每次都在创建,当方法退出时,它也会从内存中清除。我认为由于您已经给出了dispatch_一次,dateformatter实例没有得到分配,每次都是nil,您还需要更改日期格式。我已经更新了我的答案