Swift에서 오늘, 어제, 이번 주, 지난주, 이달, 지난달의 대응 날짜를 얻었습니다.

7297 단어
다음 코드의 일부는 iOS 수정에 따라 프로젝트 요구 사항이 사용됩니다.
코드로 바로 올라갔어요.

1. 현재 시간 얻기

// MARK:       
//     type         “yyyyMMdd”    “yyyy-MM-dd”    
class func nowTime(_ type: String?) -> String {
        let currentDate = Date()
        let formatter = DateFormatter()
        formatter.dateFormat = type ?? "yyyyMMdd"
        let time = formatter.string(from: currentDate)
        return time
    }

2. 현재 시간 가져오기 전날(후일)


이 방법은 오늘과 비교되는 임의의 하루의 시간을 얻을 수 있다
// MARK:       
// nowDay            
class func getLastDay(_ nowDay: String) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyyMMdd"
        
        //           date
        let date = dateFormatter.date(from: nowDay)
        let lastTime: TimeInterval = -(24*60*60) //          ,  
//        let nextTime: TimeInterval = 24*60*60 //         ,  
        
        let lastDate = date?.addingTimeInterval(lastTime)
        let lastDay = dateFormatter.string(from: lastDate!)
        return lastDay
    }      


위의 코드에 해당하는 iOS 코드는 다음과 같습니다.
//          
- (NSString *)getAgoTime:(NSString *)second
{
    //       
    NSDate * date = [NSDate date];

    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];

    //      ( )(         ,            )
    NSTimeInterval time = [second intValue];//     
    //           (-:         (   ),    ,          (   ))

    NSDate * lastYear = [date dateByAddingTimeInterval:-time];

    //      
    NSString * startDate = [dateFormatter stringFromDate:lastYear];
    return startDate;
}

3. 월요일과 일요일의 날짜 얻기

// MARK:              
class func getWeekTime(_ dateStr: String) -> Array {
      let dateFormatter = DateFormatter()
      dateFormatter.dateFormat = "yyyyMMdd"
      let nowDate = dateFormatter.date(from: dateStr)
      let calendar = Calendar.current
      let comp = calendar.dateComponents([.year, .month, .day, .weekday], from: nowDate!)
        
      //        
      let weekDay = comp.weekday
      //        
      let day = comp.day
        
      //                      
      var firstDiff: Int
      var lastDiff: Int
      // weekDay = 1;
      if (weekDay == 1) {
          firstDiff = -6;
          lastDiff = 0;
      } else {
          firstDiff = calendar.firstWeekday - weekDay! + 1
          lastDiff = 8 - weekDay!
      }
       
      //      (     )         
      var firstDayComp = calendar.dateComponents([.year, .month, .day], from: nowDate!)
      firstDayComp.day = day! + firstDiff
      let firstDayOfWeek = calendar.date(from: firstDayComp)
      var lastDayComp = calendar.dateComponents([.year, .month, .day], from: nowDate!)
      lastDayComp.day = day! + lastDiff
      let lastDayOfWeek = calendar.date(from: lastDayComp)
        
      let firstDay = dateFormatter.string(from: firstDayOfWeek!)
      let lastDay = dateFormatter.string(from: lastDayOfWeek!)
      let weekArr = [firstDay, lastDay]
        
      return weekArr;
  }


위의 코드에 해당하는 iOS 코드는 다음과 같습니다.
#pragma mark -              
+ (NSString *)getWeekTime:(NSString *)dateStr
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *nowDate = [formatter dateFromString:dateStr];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *comp = nil;
    if (DEV_VER >= 8.0) {
        comp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitDay fromDate:nowDate];
    } else {
         comp = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSDayCalendarUnit fromDate:nowDate];
    }
    
    //        
    NSInteger weekDay = [comp weekday];
    //        
    NSInteger day = [comp day];
    
    //                      
    long firstDiff,lastDiff;
    // weekDay = 1;
    if (weekDay == 1) {
        firstDiff = -6;
        lastDiff = 0;
    } else {
        firstDiff = [calendar firstWeekday] - weekDay + 1;
        lastDiff = 8 - weekDay;
    }
    
    //      (     )         
    NSDateComponents *firstDayComp = nil;
    NSDateComponents *lastDayComp = nil;
    if (DEV_VER >= 8.0) {
        firstDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay  fromDate:nowDate];
    } else {
        firstDayComp = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit  fromDate:nowDate];
    }
    [firstDayComp setDay:day + firstDiff];
    NSDate *firstDayOfWeek = [calendar dateFromComponents:firstDayComp];
    if (DEV_VER >= 8.0) {
        lastDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay   fromDate:nowDate];
    } else {
        lastDayComp = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit   fromDate:nowDate];
    }
    [lastDayComp setDay:day + lastDiff];
    NSDate *lastDayOfWeek = [calendar dateFromComponents:lastDayComp];
    
    NSString *firstDay = [formatter stringFromDate:firstDayOfWeek];
    NSString *lastDay = [formatter stringFromDate:lastDayOfWeek];
    NSString *weekStr = [NSString stringWithFormat:@"%@   %@", firstDay, lastDay];
    
    return weekStr;
}

4. 월의 시작 및 종료 날짜 가져오기

// MARK:       
// nowDay           
class func startOfCurrentMonth(_ nowDay: String) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyyMMdd"
        let nowDayDate = dateFormatter.date(from: nowDay)
        
        let calendar = Calendar.current
        let components = calendar.dateComponents([.year, .month], from: nowDayDate!)
        let startOfMonth = calendar.date(from: components)
        
        let day = dateFormatter.string(from: startOfMonth!)
        return day
    }
    
// MARK:       
class func endOfCurrentMonth(_ nowDay: String, returnEndTime:Bool = false) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyyMMdd"
        let nowDayDate = dateFormatter.date(from: nowDay)
        
        let calendar = Calendar.current
        var components = DateComponents()
        components.month = 1
        if returnEndTime {
            components.second = -1
        } else {
            components.day = -1
        }
        //startOfCurrentMonth
        let currentMonth = calendar.dateComponents([.year, .month], from: nowDayDate!)
        let startOfMonth = calendar.date(from: currentMonth)
        let endOfMonth = calendar.date(byAdding: components, to: startOfMonth!)
        
        let day = dateFormatter.string(from: endOfMonth!)
        return day
    }      

5. 지난주의 날짜와 지난달의 날짜를 얻는다


물론 상술한 방법에 따라 이번 주(이달)의 첫날을 얻은 다음에 전날, 즉 지난주(지난달)의 마지막 날을 얻은 다음에 그 주(그 달)의 날짜를 다시 얻는다.
위에서 사용한 격식은 모두 yyyyMMdd의 격식으로 사용하는 과정에서 모두가 필요로 하는 격식으로 설정할 수 있다.또한 상기 모든nowDay는 당신이 입력한 계산이 필요한 날의 날짜 형식String 유형입니다.

좋은 웹페이지 즐겨찾기