【问题标题】:How do I take a date and extract the day in iOS"如何在 iOS 中获取日期并提取日期”
【发布时间】:2013-04-12 02:29:53
【问题描述】:

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

2013-04-14

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

【问题讨论】:

  • 你看过NSDate的文档吗?
  • 当你说你想要这一天时,你是指 14 号还是星期天(以 2013 年 4 月 14 日为例)。

标签: ios date


【解决方案1】:

此代码将获取您的字符串,将其转换为 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]。

【讨论】:

  • 考虑删除对其他答案的引用。这是一个很好的答案,可以独立存在。
【解决方案2】:

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

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]);
    

    【讨论】:

      【解决方案4】:

      如果您将2013-04-14 存储在名为NSStringdate 中,那么您可以这样做...

      NSArray *dateComponents = [date componentsSeperatedByString:@"-"];
      NSString *day = [dateComponents lastObject];
      

      【讨论】:

      • 我有,但我得到的是当天的日期......所以我得到的是 11 号而不是星期四(今天)...... :)
      • 查看我的答案以了解如何显示当天的名称(例如星期日)
      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 2018-01-06
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        相关资源
        最近更新 更多