iphone - 将Adobe PDF日期字符串转换为NSDate

标签 iphone objective-c ipad ios nsdate

输入字符串为“20100908041312”

格式为年,月,日,小时,分钟,秒,时区

并且我一直在尝试将其转换为NSDate:@"yyyyMMddHHmmsszz"
但是NSDate为零,有人看到我在做什么错吗?

-(NSDate*)convertPDFDateStringAsDate:(NSString*) _string{

    //20100908041312
    //year month day Hours minutes seconds and time zone

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyyMMddHHmmsszz"]; 
    NSDate *date = [dateFormat dateFromString:_string];
    //date is nil...
    [dateFormat release];

    return date;
}

编辑:打破它的时区

EDIT2:@"yyyyMMddHHmmssTZD"使其返回nil,但不正确选择时区

EDIT3:这是我最后使用的代码...我发现格式从PDF更改为PDF,因此该代码处理了我发现的变化,在某些情况下,此不会正确提取时区。
-(NSDate*)convertPDFDateStringAsDate:(NSString*) _string{

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

    NSString * formatCheck = [_string substringToIndex:2];

    if(![formatCheck isEqualToString:@"D:"])
    {
        NSLog(@"ERROR: Date String wasnt in expected format");
        return nil;//return [NSDate date];
    }

    NSString * extract = [_string substringFromIndex:2];    

    //NSLog(@"DATESTRING:'%@'",extract);NSLog(@"DATELENGTH:%i",[extract length]);

    if([extract length]>14)
    {
        [dateFormat setDateFormat:@"yyyyMMddHHmmssTZD"];
    }
    else 
    {
        [dateFormat setDateFormat:@"yyyyMMddHHmmss"];
    }   
    NSDate * date = [dateFormat dateFromString:extract]; 
    [dateFormat release];

    return date ;
}

最佳答案

我知道发布已经有一年了,但是没有时间来找一个更好的答案了。

由于您指定输入字符串为Adobe PDF日期字符串,因此格式应符合PDF规范,每个规范为: YYYYMMDDHHmmSSOHH'mm (省略前缀D :)。

请注意,您输入的字符串长度为14个字符,而NSDate格式的长度为16个字符,因此时区不在您指定的输入字符串中。

尽管如此,您问题的真正答案是使用 Quartz 2D CGPDFString 函数:CFDateRef CGPDFStringCopyDate (CGPDFStringRef string );
该函数返回一个CFDateRef,它具有到NSDate的免费桥接,因此您可以将从PDF读取的日期传递给此函数,并通过强制转换轻松地返回NSDate。

关于iphone - 将Adobe PDF日期字符串转换为NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303394/

相关文章:

iphone - UINavigationbar 覆盖 View 顶部

android - iOS 中的 Cordova geoLocation 插件无法正常工作

iphone - xCode 4.2 的 Storyboard 方向支持吗?

ios - 在 iPad 上显示来自 ActionSheet 的 ImagePickerController

iphone - super 释放 EXC_BAD_ACCESS 错误

iphone - 在 iOS 3.2 (iPad) 中正确显示和关闭全屏 MPMoviePlayerController

iphone - 如何以编程方式为特定 UITextField 设置返回键?

Iphone屏幕视频捕捉

ios - 计算屏幕上字体的宽度

iphone - 获取开始日期和结束日期之间的所有 NSDates