Notice
Recent Posts
Recent Comments
Link
투케이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
// --------------------------------------------------------------------------------------
반응형