如何在iOS中获取日期并提取日期?

4

我有一个Web服务,它以这种格式返回日期:

2013-04-14

我该如何确定这对应哪一天?

1
你有没有查看过 NSDate 的文档? - Raptor
当你说你想要这一天时,你是指第14天还是指星期日(在2013年4月14日的情况下)。 - rmaddy
5个回答

11

这段代码将获取你的字符串,将其转换为NSDate对象,并提取出该日期的数字(14)和星期几的名称(Sunday)。

NSString *myDateString = @"2013-04-14";

// Convert the string to NSDate
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSDate *date = [dateFormatter dateFromString:myDateString];

// Extract the day number (14)
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit fromDate:date];
NSInteger day = [components day];

// Extract the day name (Sunday)
dateFormatter.dateFormat = @"EEEE";
NSString *dayName = [dateFormatter stringFromDate:date];

// Print
NSLog(@"Day: %d: Name: %@", day, dayName);

注意:此代码适用于ARC。如果使用MRC,请在末尾添加[dateFormatter release]。


1
考虑删除对其他答案的引用。这是一个很好的答案,可以独立存在。 - Caleb

6

获取工作日的另一种方法是:

NSString *myDateString = @"2013-04-14";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSDate *date = [dateFormatter dateFromString:myDateString];
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:date];

NSInteger weekday = [components weekday];
NSString *weekdayName = [dateFormatter weekdaySymbols][weekday - 1];

NSLog(@"%@ is a %@", myDateString, weekdayName);

3
你可以使用这段代码,它对我来说有效。
NSString *dateString = @"2013-04-14";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
[dateFormatter setDateFormat:@"EEEE"];
NSLog(@"%@", [dateFormatter stringFromDate:dateFromString]);

0

Swift 3:


let datFromat = DateFormatter()

datFormat.dateFormat = "EEEE"

let name = datFormat.string(from: Date())

奖励: 如果你想设置自己的日期模板而不是使用上面的Date()

let datFormat = DateFormatter()

datFormat.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"

let thisDate = datFormat.date(from: "2016-10-13T18:00:00-0400")

在此之后调用第一个代码。


0
如果您在名为“date”的NSString中存储了“2013-04-14”,那么您可以这样做...
NSArray *dateComponents = [date componentsSeperatedByString:@"-"];
NSString *day = [dateComponents lastObject];

我确实得到当天的日期...所以今天是星期四,但我得到了11号... :) - marciokoko
请看我的答案,了解如何显示星期几的名称(例如:星期日)。 - nebs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接