gpt4 book ai didi

ios - NSDateFormatter dateFromString在iOS 10上运行但在iOS 11上返回nil

转载 作者:行者123 更新时间:2023-12-01 19:50:21 25 4
gpt4 key购买 nike

我的内部应用程序(使用了近两年)具有不同格式的messages dates

1* Sep 20, 2017 at 8:09:39 PM

2* Feb 3, 2017, 5:49:42 PM

我正在像这样将这些字符串转换为日期
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateStyle:NSDateFormatterMediumStyle];
[df setTimeStyle:NSDateFormatterMediumStyle];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
return [df dateFromString:dtStr];

对于日期1,它可以在iOS 10和11上完美运行

但对于日期2,它仅适用于iOS 10,不适用于iOS 11

我怎样才能解决这个问题?

最佳答案

因此,似乎更大的问题实际上是您要输入多种日期格式。

在此处查看此问题/答案:
Converting mutliple date format into a single format in iPhone

似乎效率不高……但是它将为您服务。它也利用其他人评论的特定日期格式。

这是针对您的问题的自适应答案:

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) NSDateFormatter *dateFormatter;
@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];


NSString *date1 = @"Sep 20, 2017 at 8:09:39 PM";
NSString *date2 = @"Feb 3, 2017, 5:49:42 PM";

NSLog(@"Date 1: %@", [self dateFromString:date1]);
NSLog(@"Date 2: %@", [self dateFromString:date2]);
}

- (NSDate *)dateFromString:(NSString *)dateString {
NSDate *date = nil;

// here, insert other date formats you know might be given
NSArray *dateFormatterList = @[
@"MMM d, y, hh:mm:ss a",
@"MMM d, y 'at' hh:mm:ss a"
];

if (dateString) {
for (NSString *dateFormatterString in dateFormatterList) {
[self.dateFormatter setDateFormat:dateFormatterString];
date = [self.dateFormatter dateFromString:dateString];
if (date) break;
}
}

return date;
}

- (NSDateFormatter *)dateFormatter {
if (!_dateFormatter) {
_dateFormatter = [[NSDateFormatter alloc] init];
}
return _dateFormatter;
}
@end

基本上发生了什么...我们有一系列已知的日期格式。我们遍历每种格式,并尝试使用该格式从日期字符串中获取NSDate。如果我们得到一个,我们将返回该日期。如果您有更多的日期格式,只需将其插入dateFormatterList。您会注意到我已经输入了两种日期格式:日期1 *的 @"MMM d, y, hh:mm:ss a"和上面日期2 *的@“MMM d,y'at'hh:mm:ss a”。

我用您的两个日期测试了它,并且可以正常工作。
日志:
Date 1: Wed Sep 20 20:09:39 2017 Date 2: Fri Feb 3 17:49:42 2017

关于ios - NSDateFormatter dateFromString在iOS 10上运行但在iOS 11上返回nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46328237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com