iOS-无法分析日期字符串;2014年7月31日英国夏令时00:00;使用NSDateFormatter获取字符串08-31-14

iOS-无法分析日期字符串;2014年7月31日英国夏令时00:00;使用NSDateFormatter获取字符串08-31-14,ios,Ios,需要将日期字符串转换为不同的格式 原件:英国夏令时年月日 预计:年月日 尝试了以下代码,但不起作用 NSDateFormatter *dateFormatter = [NSDateFormatter new]; dateFormatter.dateFormat = @"dd-MM-yyyy HH:mm BST"; NSDate *dateFormat = [[NSDate alloc] init]; dateFormat = [dateFormatter dateFromString:d

需要将日期字符串转换为不同的格式

原件:英国夏令时年月日 预计:年月日

尝试了以下代码,但不起作用

NSDateFormatter *dateFormatter = [NSDateFormatter new];

dateFormatter.dateFormat =  @"dd-MM-yyyy HH:mm BST";

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

dateFormat = [dateFormatter dateFromString:dateString];
[dateFormatter setDateFormat:@"dd-MM-yy"];
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
return [dateFormatter stringFromDate:dateFormat];

格式化时使用的是空NSDate(*dateFormat),这意味着日期格式化程序无需格式化任何内容。它是空的,因为您重新分配它并重新初始化它,这意味着您重置了变量的所有内容。为NSDate指定一个值,然后它将正常工作

格式化时使用的是空的NSDate(*dateFormat),这意味着没有任何内容可用于格式化日期格式化程序。它是空的,因为您重新分配它并重新初始化它,这意味着您重置了变量的所有内容。为NSDate指定一个值,然后它将正常工作

格式化时使用的是空的NSDate(*dateFormat),这意味着没有任何内容可用于格式化日期格式化程序。它是空的,因为您重新分配它并重新初始化它,这意味着您重置了变量的所有内容。为NSDate指定一个值,然后它将正常工作

格式化时使用的是空的NSDate(*dateFormat),这意味着没有任何内容可用于格式化日期格式化程序。它是空的,因为您重新分配它并重新初始化它,这意味着您重置了变量的所有内容。为NSDate指定一个值,然后它将正常工作

NSString *dateString = @"31-07-2014 00:00 BST";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"BST"]];
[dateFormatter setDateFormat:@"dd-MM-yyyyHH:mm 'BST'"];

NSDate *dateFormat = [[NSDate alloc] init];
dateFormat = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:@"dd-MM-yy"];
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
我在这里做的是为源NSDateFormatter设置适当的时区,然后根据它解析日期。看看setDateFormat。我使用单引号表示静态字符串是日期格式的一部分

可以更动态地编写它以确定正确的时区,但需要进行一些字符串拆分

我希望它能有所帮助。

这应该可以:

NSString *dateString = @"31-07-2014 00:00 BST";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"BST"]];
[dateFormatter setDateFormat:@"dd-MM-yyyyHH:mm 'BST'"];

NSDate *dateFormat = [[NSDate alloc] init];
dateFormat = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:@"dd-MM-yy"];
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
我在这里做的是为源NSDateFormatter设置适当的时区,然后根据它解析日期。看看setDateFormat。我使用单引号表示静态字符串是日期格式的一部分

可以更动态地编写它以确定正确的时区,但需要进行一些字符串拆分

我希望它能有所帮助。

这应该可以:

NSString *dateString = @"31-07-2014 00:00 BST";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"BST"]];
[dateFormatter setDateFormat:@"dd-MM-yyyyHH:mm 'BST'"];

NSDate *dateFormat = [[NSDate alloc] init];
dateFormat = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:@"dd-MM-yy"];
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
我在这里做的是为源NSDateFormatter设置适当的时区,然后根据它解析日期。看看setDateFormat。我使用单引号表示静态字符串是日期格式的一部分

可以更动态地编写它以确定正确的时区,但需要进行一些字符串拆分

我希望它能有所帮助。

这应该可以:

NSString *dateString = @"31-07-2014 00:00 BST";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"BST"]];
[dateFormatter setDateFormat:@"dd-MM-yyyyHH:mm 'BST'"];

NSDate *dateFormat = [[NSDate alloc] init];
dateFormat = [dateFormatter dateFromString:dateString];

[dateFormatter setDateFormat:@"dd-MM-yy"];
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
我在这里做的是为源NSDateFormatter设置适当的时区,然后根据它解析日期。看看setDateFormat。我使用单引号表示静态字符串是日期格式的一部分

可以更动态地编写它以确定正确的时区,但需要进行一些字符串拆分

我希望有帮助。

@user1088267

方法:1 方法:2 @用户1088267

方法:1 方法:2 @用户1088267

方法:1 方法:2 @用户1088267

方法:1 方法:2
问题在于您的
日期格式

dateString = @"31-07-2014 00:00 BST";
...
dateFormatter.dateFormat =  @"dd-MM-yyyy HH:mm BST"; // wrong format
...
// this makes dateFormat to become nil
dateFormat = [dateFormatter dateFromString:dateString];
...
// pass nil here
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
您的日期格式化程序无法分析字符串,因为它的格式错误并返回
nil
。然后在
-stringFromDate:
中使用
nil
,并在
NSLog
中打印
nil
。您可以通过如下方式固定日期格式来解决此问题:

dateFormatter.dateFormat = "dd-MM-yyyy HH:mm 'BST'"; // note 'quotes'
但这是一种不好的做法,因为你散播了时区信息
z
(或
V
,不确定为什么)作为时区格式将不起作用,因为
BST
是元时区。作为一种解决方法,您可以设置日期格式化程序的时区并执行转换

您可以阅读有关格式模式的内容,如果没有,请将此页面添加到书签中

此外,您不需要分配不必要的对象来使用指针:

// this is useless, you create pointer to NSDate, create/init NSDate instance
// and make that pointer to point to created instance
NSDate *dateFormat = [[NSDate alloc] init]; 
// here you make dateFormat to point somewhere else -dateFromString: returns
// causing ARC to delete your NSDate instance created on the previous line
dateFormat = [dateFormatter dateFromString:dateString];

// so, you just want:
NSDate *dateFormat = [dateFormatter dateFromString:dateString];

问题在于您的
日期格式

dateString = @"31-07-2014 00:00 BST";
...
dateFormatter.dateFormat =  @"dd-MM-yyyy HH:mm BST"; // wrong format
...
// this makes dateFormat to become nil
dateFormat = [dateFormatter dateFromString:dateString];
...
// pass nil here
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
您的日期格式化程序无法分析字符串,因为它的格式错误并返回
nil
。然后在
-stringFromDate:
中使用
nil
,并在
NSLog
中打印
nil
。您可以通过如下方式固定日期格式来解决此问题:

dateFormatter.dateFormat = "dd-MM-yyyy HH:mm 'BST'"; // note 'quotes'
但这是一种不好的做法,因为你散播了时区信息
z
(或
V
,不确定为什么)作为时区格式将不起作用,因为
BST
是元时区。作为一种解决方法,您可以设置日期格式化程序的时区并执行转换

您可以阅读有关格式模式的内容,如果没有,请将此页面添加到书签中

此外,您不需要分配不必要的对象来使用指针:

// this is useless, you create pointer to NSDate, create/init NSDate instance
// and make that pointer to point to created instance
NSDate *dateFormat = [[NSDate alloc] init]; 
// here you make dateFormat to point somewhere else -dateFromString: returns
// causing ARC to delete your NSDate instance created on the previous line
dateFormat = [dateFormatter dateFromString:dateString];

// so, you just want:
NSDate *dateFormat = [dateFormatter dateFromString:dateString];

问题在于您的
日期格式

dateString = @"31-07-2014 00:00 BST";
...
dateFormatter.dateFormat =  @"dd-MM-yyyy HH:mm BST"; // wrong format
...
// this makes dateFormat to become nil
dateFormat = [dateFormatter dateFromString:dateString];
...
// pass nil here
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
您的日期格式化程序无法分析字符串,因为它的格式错误并返回
nil
。然后在
-stringFromDate:
中使用
nil
,并在
NSLog
中打印
nil
。您可以通过如下方式固定日期格式来解决此问题:

dateFormatter.dateFormat = "dd-MM-yyyy HH:mm 'BST'"; // note 'quotes'
但这是一种不好的做法,因为你散播了时区信息
z
(或
V
,不确定为什么)作为时区格式将不起作用,因为
BST
是元时区。作为一种解决方法,您可以设置日期格式化程序的时区并执行转换

您可以阅读有关格式模式的内容,如果没有,请将此页面添加到书签中

此外,您不需要分配不必要的对象来使用指针:

// this is useless, you create pointer to NSDate, create/init NSDate instance
// and make that pointer to point to created instance
NSDate *dateFormat = [[NSDate alloc] init]; 
// here you make dateFormat to point somewhere else -dateFromString: returns
// causing ARC to delete your NSDate instance created on the previous line
dateFormat = [dateFormatter dateFromString:dateString];

// so, you just want:
NSDate *dateFormat = [dateFormatter dateFromString:dateString];

问题在于您的
日期格式

dateString = @"31-07-2014 00:00 BST";
...
dateFormatter.dateFormat =  @"dd-MM-yyyy HH:mm BST"; // wrong format
...
// this makes dateFormat to become nil
dateFormat = [dateFormatter dateFromString:dateString];
...
// pass nil here
NSLog(@"formatted date: %@", [dateFormatter stringFromDate:dateFormat]);
您的日期格式化程序无法分析字符串,因为它的格式错误并返回
nil
。然后在
-stringFromDate:
中使用
nil
,并在
NSLog
中打印
nil
。您可以通过如下方式固定日期格式来解决此问题:

dateFormatter.dateFormat = "dd-MM-yyyy HH:mm 'BST'"; // note 'quotes'
但这是不好的做法,因为你