4

我有一个以这种格式返回日期的网络服务:

2013-04-14

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

4

5 回答 5

11

此代码将获取您的字符串,将其转换为 NSDate 对象并提取日期(14)和日期名称(星期日)

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]。

于 2013-04-12T02:37:30.567 回答
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);
于 2013-04-12T02:47:35.173 回答
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]);
于 2014-12-30T12:18:22.483 回答
0

如果你已经2013-04-14存储在一个NSString被调用的date,那么你可以这样做......

NSArray *dateComponents = [date componentsSeperatedByString:@"-"];
NSString *day = [dateComponents lastObject];
于 2013-04-12T02:34:15.853 回答
0

斯威夫特 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")

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

于 2016-10-05T01:18:48.083 回答