gpt4 book ai didi

iphone - 更改日期格式中的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:12 24 4
gpt4 key购买 nike

我有一个字符串数组,如下所示

newlymadeArray(
"03/05/2013",
"09/22/2013",
"03/02/2013",
"03/02/2013",
"08/22/2013",
"11/02/2013",
"07/08/2013",
"08/31/2013",
"05/13/2013",
"07/11/2013",
"10/07/2013",
"02/20/2013"

)

当前格式是 MM/dd/yyyy

我想把它改成dd/MM/yyyy

我正在为此使用以下代码

  NSLog(@"_newlymadeArray%@",_newlymadeArray);
//logic for changing date formate
for( int i=0; i<_newlymadeArray.count; i++){
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"MM/dd/yyyy"];
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"dd/MM/yyyy"];

NSDate *old = [dateFormatter1 dateFromString:[_newlymadeArray objectAtIndex:i]];
NSLog(@"old %@",old);

NSString *old1 =[dateFormatter1 stringFromDate:old];

NSDate *new = [dateFormatter2 dateFromString:old1];
NSLog(@"new %@",new);

NSString *string = [dateFormatter2 stringFromDate:new];
NSLog(@"string %@",string);

[_convertedBdates addObject:string];

}

NSLog(@"_convertedBdates%@",_convertedBdates);

这就是我得到的输出

  old 2013-03-04 18:30:00 +0000
new 2013-05-02 18:30:00 +0000
string 03/05/2013
old 2013-09-21 18:30:00 +0000
new (null)
string (null)
] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:

我的问题是为什么旧的打印日期为 2013-03-04 而不是 05/03/2013 在第一次循环结束时,它打印 03/05/2013 而不是 05/03/2013 当循环第二次运行时,它在 new 中获得空值,这就是为什么在数组程序中添加空值会崩溃

请告诉我我做错了什么?

最佳答案

永远都不合适:

NSString *old1 =[dateFormatter1 stringFromDate:old];
NSDate *new = [dateFormatter2 dateFromString:old1];

您是说,“使用一种格式化程序格式化日期……然后使用不同的格式化程序对其进行解析。”

您已经解析了旧格式的值。您现在需要在新的格式化程序中格式化它。

我不是 Objective-C 开发人员,但我怀疑您只是想要:

NSDate *date = [dateFormatter1 dateFromString:[_newlymadeArray objectAtIndex:i]];
NSString *string = [dateFormatter2 stringFromDate:date];
[_convertedBdates addObject:string];

请注意如何只涉及一个日期,但有两个字符串(原始格式和新格式)。

另请注意,无需在循环的每次迭代中创建一对新的格式化程序。在循环之前创建它们并重用它们:

NSDateFormatter *oldFormatter = [[NSDateFormatter alloc] init];
[oldFormatter setDateFormat:@"MM/dd/yyyy"];
NSDateFormatter *newFormatter = [[NSDateFormatter alloc] init];
[newFormatter setDateFormat:@"dd/MM/yyyy"];

for (int i = 0; i < _newlymadeArray.count; i++) {
NSDate *date = [oldFormatter dateFromString:[_newlymadeArray objectAtIndex:i]];
NSString *string = [newFormatter stringFromDate:date];
[_convertedBdates addObject:string];
}

(当然,您可能想检查循环内的date 是否为空,以处理错误数据。)

关于iphone - 更改日期格式中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15402881/

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