【问题标题】:How to convert NSArray to NSDate如何将 NSArray 转换为 NSDate
【发布时间】:2023-03-18 09:40:01
【问题描述】:

我有一个有日期的数组。我想将数组转换为 NSDate。然后将转换后的 NSDate 存储在另一个数组中。这是我的数组。

uniqueItems (
 "2015-02-17",
"2015-02-09",
"2015-02-02",
"2015-01-27",
"2015-01-19",
"2015-01-12"
)

如何将此数组转换为 NSDate,并存储到另一个数组中。帮我写代码。

【问题讨论】:

  • 为什么不自己尝试一下,很简单。用for每个循环枚举这个数组,你会得到字符串。制作日期格式化程序并将它们转换为日期并将它们存储到可变数组中。完成!
  • 大家好,请不要气馁任何人.. 否则我们可以写评论为 pawan。可能是那个人是新手,所以他/她不明白,他/她想学习......
  • 鼓励一些新手自己编写代码有什么问题。如果他没有做到这一点,他可以随时返回这里寻求有关他尝试过的代码的帮助。 最重要的是,stackoverflow 不是为某人编写代码的平台
  • @pawan @ Er.shreyansh shah 感谢您的关心和建议。
  • 最后一个建议,不要为每个循环创建带有 in 的 nsdateformatter,而是在 for 循环之前创建它,或者更好地在接口中声明它。因为 nsdateformatter 非常昂贵,它们在运行时会占用大量的处理时间和内存。

标签: ios objective-c nsmutablearray nsarray nsdate


【解决方案1】:

假设你有一个数组如下:

NSArray *ary = [NSArray arrayWithObjects:@"2015-02-17",@"2015-02-09",@"2015-02-02", nil];

将每个字符串转换为日期:-

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
for(int i =0;i<ary.count;i++){

    NSDate *d = [[NSDate alloc]init];
    d = [dateFormatter dateFromString:ary[i]];
}

如果你想使用NSDateFormate,你也可以在循环中使用。

【讨论】:

  • 它将返回 NSString 对象,您必须将其转换为 NSDate 对象,为此您需要 dateformatter 然后对其进行转换。
  • @ChintaN-Maddy-Ramani :- 谢谢 chintan 的帮助。这只是我最后写的一个演示或原型,如果你想使用 Dateformatter 而不是你可以在循环中使用。
  • 你必须使用它,否则你不会得到 NSDate 对象。
  • 你可以试试看它的类,这样你就知道了。
  • @GowthamK :- 你想要任何特定的格式,所以我只能用那种格式编辑。
【解决方案2】:

首先将你的 NSString 转换为 NSDate

NSArray *arrr = @[ @"2015-02-17",
                   @"2015-02-09",
                   @"2015-02-02",
                   @"2015-01-27",
                   @"2015-01-19",
                   @"2015-01-12"];
NSMutableArray *arrDates = [[NSMutableArray alloc]init];           
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd"];
[df setTimeZone:[NSTimeZone systemTimeZone]];
for (int i = 0; i<arrr.count; i++) {
    [arrDates addObject:[df dateFromString:arrr[i]];;
}
NSLog(@"%@",arrDates);

现在为日期排序数组,因为您的数组包含 NSDate 对象。你没有钥匙所以不要传递任何钥匙

NSSortDescriptor *dateDescriptor = [NSSortDescriptor
                                    sortDescriptorWithKey:@""
                                    ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedDateArray = [arrDates sortedArrayUsingDescriptors:sortDescriptors];

NSLog(@"%@",sortedDateArray);

【讨论】:

  • arrDates 正在获取空值
  • 我使用了arrr,你必须使用你的数组并传递你的数组NSDate *dd = [df dateFromString:yourArray[i]];,并确保你使用NSMutableArray *arrDates = [[NSMutableArray alloc]init]; 分配初始化arrDates
【解决方案3】:

我可以理解你是新手,请按照以下步骤操作,但请记住首先获得理解:-

1.枚举您的数组以获取所有字符串(供您理解的日期),并将它们添加到您想要的另一个数组中,如下所示:-

for (NSString *dateString in yourArrayofDates) {
    NSDate *date=[self getDateFromDateString:dateString];
    [yourAnotherDateArray addObject:date];
 }

2.添加一个从字符串中获取 NSDate 的方法,如下所示:-

-(NSDate *)getDateFromDateString :(NSString *)dateString {
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:dateString];
return date;
}

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2011-06-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多