【问题标题】:Get name of the day in a week from the day number. (iOS)从日期编号获取一周中的日期名称。 (iOS)
【发布时间】:2016-08-03 07:50:45
【问题描述】:

我正在想办法从日期编号(例如:1 表示周一,2 表示周二..等)获取当天的名称(例如:周一、周二..)。

我有一个类似这样结构的NSDictionary

{
close =     {
    day = 5;
    time = "22:00";
    dayName = "";
};
open =     {
    day = 5;
    time = "9:00";
    dayName = "";
};
}

我想在“dayName”键下将日期名称添加到此字典中...其中值是与“day”键中的日期编号对应的日期名称。

谢谢你:)

【问题讨论】:

  • 嗯,你可以创建枚举方法,根据数字开关(天)返回字符串......案例1:返回星期一......

标签: ios objective-c nsdate nsdateformatter


【解决方案1】:

让我们从获取日期的名称开始:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSArray *daySymbols = dateFormatter.standaloneWeekdaySymbols;

现在,这是一个工作日名称数组,其中索引 0 是星期日,因此您必须转换索引。

NSInteger dayIndex = 1; // 1 = Monday, ... 7 = Sunday
NSString *dayName = daySymbols[dayIndex % 7];

【讨论】:

    【解决方案2】:
    NSString * closeDay=[[yourDictionary valueForKey:@"close"] valueForKey:@"dayName"];
    NSString * openDay=[[yourDictionary valueForKey:@"open"] valueForKey:@"dayName"];
    

    如果你想检查它,你可以用 day 替换 dayName。希望能帮到你;

    【讨论】:

      【解决方案3】:

      应用枚举并将日期添加到数组中

      NSString * closeDay=[[yourDictionary valueForKey:@"close"] valueForKey:@"dayName"];
      NSString * openDay=[[yourDictionary valueForKey:@"open"] valueForKey:@"dayName"];
      
      NSMutableArray *arr = [[NSMutableArray alloc]init];
      
      [arr addObject:openDay];
      NSMutableArray *finalArray= [[NSMutableArray alloc]init];
      
      for(int i=0; i<[givenDic count];i++){
      NSString *day= [self getDay:arr[i]];
      NSMutableDictionary *dic= [[NSMutableDictionary alloc]init];
      [dic setObject:day forKey:@"dayName"];
      [finalArray addObject:dic];
      }
      
      -(NSString*)getDay:(NSString *)dayNo{
      switch([dayNo intValue]){
      
      case 1:
      return Monday;
      break;
      
      case 2:
      return Tuesday;
      break;
      
      case 3:
      return Wednesday;
      break;
      
      case 4:
      return Thursday;
      break;
      
      case 5:
      return Friday;
      break;
      
      case 6:
      return Saturday;
      break;
      
      case 7:
      return Sunday;
      break;
      }
      }
      

      【讨论】:

        【解决方案4】:
        NSMutableArray *array = [NSMutableArray new];
        [array addObject:@"1"];
        [array addObject:@"2"];
        [array addObject:@"5"];
        [array addObject:@"4"];
        
        NSMutableArray *mainArray = [NSMutableArray new];
        
        for(int i=0; i< array.count;i++){
            NSMutableDictionary *dict = [NSMutableDictionary new];
            switch ([array[i] integerValue]) {
                case DayOne:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Sunday" forKey:@"dayName"];
                    break;
                case DayTwo:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Monday" forKey:@"dayName"];
                    break;
                case DayThree:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Tuesday" forKey:@"dayName"];
                    break;
                case DayFour:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Wednesday" forKey:@"dayName"];
                    break;
                case DayFive:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Thursday" forKey:@"dayName"];
                    break;
                case DaySix:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Friday" forKey:@"dayName"];
                    break;
                case DaySeven:
                    [dict setObject:array[i] forKey:@"day"];
                    [dict setObject:@"your time" forKey:@"time"];
                    [dict setObject:@"Saturday" forKey:@"dayName"];
                    break;
                default:
                    break;
            }
            [mainArray addObject:dict];
        }
        NSLog(@"%@",mainArray);
        

        typedef NS_ENUM(NSInteger,DayString) { 第一天 = 1, 第二天, 第三天, 第四天, 第五天, 第六天, 第七天 };

        【讨论】:

        • 呵呵,如果您正在创建enum,为什么不使用人类可读的名称命名这些案例?例如Monday 而不是 DayOne?此外,Apple 编码指南要求您将案例命名为 kDayStringMondaykDayStringTuesday 等以避免命名冲突。
        • 是的,你说得对,我理解,必须更改枚举成员才能读取。
        猜你喜欢
        • 2014-01-21
        • 2017-04-17
        • 2015-02-24
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 2021-08-21
        • 1970-01-01
        相关资源
        最近更新 更多