투케이2K

219. (swift/xcode) [유틸 파일] getDateCalTimeStamp : 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환 본문

Swift

219. (swift/xcode) [유틸 파일] getDateCalTimeStamp : 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환

투케이2K 2025. 4. 5. 08:50

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Swift5

- 개발 툴 : Xcode

- 구분 : 유틸 파일

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

func getDateCalTimeStamp(yyyy: String, MM: String, dd: String, HH: String, mm: String, ss: String) -> Array<String> {
        
    /*
    // -----------------------------------------
    [getDateCalTimeStamp 메소드 설명]
    // -----------------------------------------
    1. 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환
    // -----------------------------------------
    2. 호출 방법 :
      
      C_Util().getDateCalTimeStamp(yyyy: "5", MM: "", dd: "", HH: "", mm: "", ss: "") // [연]
      C_Util().getDateCalTimeStamp(yyyy: "", MM: "5", dd: "", HH: "", mm: "", ss: "") // [월]
      C_Util().getDateCalTimeStamp(yyyy: "", MM: "", dd: "5", HH: "", mm: "", ss: "") // [일]
      C_Util().getDateCalTimeStamp(yyyy: "", MM: "", dd: "", HH: "5", mm: "", ss: "") // [시]
      C_Util().getDateCalTimeStamp(yyyy: "", MM: "", dd: "", HH: "", mm: "5", ss: "") // [분]
      C_Util().getDateCalTimeStamp(yyyy: "", MM: "", dd: "", HH: "", mm: "", ss: "5") // [초]
    // -----------------------------------------
    3. 리턴 반환 : 
      
      현재 날짜 및 시간 값 / 타임 스탬프 13 자리 : 배열 0 번지, 배열 1 번지
      
      계산 날짜 및 시간 값 / 타임 스탬프 13 자리 : 배열 2 번지, 배열 3 번지
      
      예시 : 5초 이전 : [2025-04-04 09:58:17, 1743728297169, 2025-04-04 09:58:12, 1743728292169]
    // -----------------------------------------
    */
    
    
    // [초기 리턴 데이터 변수 선언 실시]
    var returnData = Array(repeating: "", count: 4)
    
    
    // [date 객체 설정 수행 실시]
    let date = Date() // 현재의 Date 날짜 및 시간
    let dateFormatter = DateFormatter() // Date 포맷 객체 선언
    dateFormatter.locale = Locale(identifier: "ko") // 한국 지정
    
    
    // [date 포맷 타입 정의 및 현재 날짜 및 시간 확인]
    // dateFormatter.dateFormat = "yyyy.MM.dd HH:mm:ss E요일" // Date 포맷 타입 지정
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" // Date 포맷 타입 지정
    
    let nowDateString = dateFormatter.string(from: date) // 포맷된 형식 현재 날짜 및 시간
    let nowTimeStampString = String(describing: Int64((date.timeIntervalSince1970 * 1000.0).rounded())) // 13 자리 타임스탬프
    
    
    // ------------------------------------------------
    // MARK: [리턴 배열에 현재 날짜 및 시간 추가]
    // ------------------------------------------------
    returnData[0] = nowDateString // 현재 날짜 및 시간
    returnData[1] = nowTimeStampString // 타임 스탬프
    
    
    // [인풋 값에 따라서 현재 날짜 및 시간에 특정 시간 추가 및 빼기 수행]
    var cal_Year = 0
    var cal_Month = 0
    var cal_Day = 0
    var cal_Hour = 0
    var cal_Minute = 0
    var cal_Second = 0
    
    if C_Util().stringIsNumber(string: yyyy) { // [String Is Number]
        cal_Year = Int(yyyy) ?? 0
    }
    if C_Util().stringIsNumber(string: MM) { // [String Is Number]
        cal_Month = Int(MM) ?? 0
    }
    if C_Util().stringIsNumber(string: dd) { // [String Is Number]
        cal_Day = Int(dd) ?? 0
    }
    if C_Util().stringIsNumber(string: HH) { // [String Is Number]
        cal_Hour = Int(HH) ?? 0
    }
    if C_Util().stringIsNumber(string: mm) { // [String Is Number]
        cal_Minute = Int(mm) ?? 0
    }
    if C_Util().stringIsNumber(string: ss) { // [String Is Number]
        cal_Second = Int(ss) ?? 0
    }
    
    S_Log.e(tag: "CAL_DATE", msg: "\(cal_Year)-\(cal_Month)-\(cal_Day) \(cal_Hour):\(cal_Minute):\(cal_Second)")
    
    let cal_Date = DateComponents(
        year:cal_Year,
        month: cal_Month,
        day: cal_Day,
        hour: cal_Hour,
        minute: cal_Minute,
        second: cal_Second
    )
    
    
    // ------------------------------------------------
    // MARK: [리턴 배열에 계산 된 날짜 및 시간 추가]
    // ------------------------------------------------
    if let new_Date = Calendar.current.date(byAdding: cal_Date, to: date) {
        
        let new_Format = DateFormatter() // Date 포맷 객체 선언
        new_Format.locale = Locale(identifier: "ko") // 한국 지정
        
        
        // [date 포맷 타입 정의 및 현재 날짜 및 시간 확인]
        // new_Format.dateFormat = "yyyy.MM.dd HH:mm:ss E요일" // Date 포맷 타입 지정
        new_Format.dateFormat = "yyyy-MM-dd HH:mm:ss" // Date 포맷 타입 지정
        
        let newDateString = new_Format.string(from: new_Date) // 포맷된 형식 현재 날짜 및 시간
        let newTimeStampString = String(describing: Int64((new_Date.timeIntervalSince1970 * 1000.0).rounded())) // 13 자리 타임스탬프
        
        returnData[2] = newDateString // 현재 날짜 및 시간
        returnData[3] = newTimeStampString // 타임 스탬프
    }
    
    
    // [로그 출력 실시]
    S_Log._D_(description: "현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환", data: [
        "RETURN :: \(returnData)"
    ])
    
    
    // [리턴 데이터 반환 실시]
    return returnData
}

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

🔴 :: CAL_DATE :: 5-0-0 0:0:0



================================================================
LOG :: TYPE :: LOG :: 🟢
-------------------------------------------------
LOG :: CLASS PLACE :: C_Util.swift :: getDateCalTimeStamp(yyyy:MM:dd:HH:mm:ss:) :: 4662
-------------------------------------------------
LOG :: NOW TIME :: 2025-04-05 08:21:19
-------------------------------------------------
LOG :: DESCRIPTION :: 현재 날짜 및 시간에서 특정 시간 더하기 및 빼기 수행 한 타임스탬프 값 반환
-------------------------------------------------
LOG :: RETURN :: ["2025-04-05 08:21:19", "1743808879122", "2030-04-05 08:21:19", "1901575279122"]
================================================================

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://blog.naver.com/kkh0977/222535389940?trackingCode=blog_bloghome_searchlist

https://blog.naver.com/kkh0977/222934137667?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
반응형
Comments