Notice
Recent Posts
Recent Comments
Link
투케이2K
117. (swift/xcode) [유틸 파일] getDateMinus - 두 날짜 타임스탬프 값 확인해 시 (hour) , 분 (minute) , 초 (seconds) 차이 반환 본문
Swift
117. (swift/xcode) [유틸 파일] getDateMinus - 두 날짜 타임스탬프 값 확인해 시 (hour) , 분 (minute) , 초 (seconds) 차이 반환
투케이2K 2022. 10. 28. 10:28[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
// MARK: - [두 날짜 차이 계산 수행 실시 : 타임 스탬프 값 기준]
func getDateMinus(bigDate:String, smallDate:String) -> Int{
/*
// -----------------------------------------
[getDateMinus 메소드 설명]
// -----------------------------------------
1. 날짜 형식 : date 형식을 milli seconds 형식으로 받는다 (ex: 1644466392686)
// -----------------------------------------
2. bigDate (큰 날짜) - smallDate (작은 날짜) 연산 수행
// -----------------------------------------
3. 리턴 형식 : 초 , 분 , 시간 단위 선택
// -----------------------------------------
4. 호출 예시 :
- C_Util().getDateMinus(bigDate:"1644466392686", smallDate:"1644466392686") // [동일]
- C_Util().getDateMinus(bigDate:"1644466392686", smallDate:"1644466169826") // [다름]
// -----------------------------------------
*/
// [초기 리턴 데이터 선언]
var returnData = 0
// [인풋으로 들어온 값에 공백이 있는 경우 제거 실시]
var _bigDate = String(describing: bigDate ?? "")
var _smallDate = String(describing: smallDate ?? "")
_bigDate = _bigDate.replacingOccurrences(of: " ", with: "")
_smallDate = _smallDate.replacingOccurrences(of: " ", with: "")
// [인풋으로 들어온 값이 널이 아닌지 확인 실시]
if _bigDate != nil && _bigDate.count>0 && _bigDate != ""
&& _smallDate != nil && _smallDate.count>0 && _smallDate != "" {
// [인풋으로 들어온 값이 모두 숫자로 구성되어 있는지 확인 실시]
var _bigDate_NotNumber = false
var _smallDate_NotNumber = false
for _big_char in _bigDate {
if _big_char.isNumber == false { // 정수 값이 아닌 경우
_bigDate_NotNumber = true
}
}
for _small_char in _smallDate {
if _small_char.isNumber == false { // 정수 값이 아닌 경우
_smallDate_NotNumber = true
}
}
// [로직 처리 수행 실시]
if _bigDate_NotNumber == false && _smallDate_NotNumber == false { // 모두 정수로 구성된 경우
let _big_int64 = Int64(_bigDate) ?? 0 // 형변환
let _small_int64 = Int64(_smallDate) ?? 0 // 형변환
let b_date = Date(timeIntervalSince1970: TimeInterval(Int64(_big_int64) ?? 0) / 1000) // 정식 날짜로 출력
let s_date = Date(timeIntervalSince1970: TimeInterval(Int64(_small_int64) ?? 0) / 1000) // 정식 날짜로 출력
let minus = (_big_int64 - _small_int64) // 밀리세컨드 빼기 수행
let seconds = minus / 1000 // 초 단위 기준 차이
let minute = seconds / 60 // 분 단위 기준 차이
let hour = minute / 60 // 시간 단위 기준 차이
print("")
print("====================================")
print("[C_Util >> getDateMinus() :: 두 날짜 차이 계산 결과 확인]")
print("-------------------------------")
print("_bigDate [인풋 날짜_1] : ", _bigDate)
print("_smallDate [인풋 날짜_2] : ", _smallDate)
print("-------------------------------")
print("b_date [인풋 날짜_1] : ", b_date)
print("s_date [인풋 날짜_2] : ", s_date)
print("-------------------------------")
print("minus [빼기 수행] :: ", minus)
print("seconds (초) 차이 :: ", seconds)
print("minute (분) 차이 :: ", minute)
print("hour (시간) 차이 :: ", hour)
print("====================================")
print("")
// [원하는 타입 선택 후 리턴 결과 반환 실시]
returnData = Int(minute) // [분]
//returnData = Int(seconds) // [초]
return returnData
}
else { // 문자가 포함된 경우
print("")
print("====================================")
print("[C_Util >> getDateMinus() :: 두 날짜 차이 계산 에러]")
print("-------------------------------")
print("_bigDate [인풋 날짜_1] : ", _bigDate)
print("-------------------------------")
print("_smallDate [인풋 날짜_2] : ", _smallDate)
print("-------------------------------")
print("error [문자 에러] : ", "비정상 데이터")
print("====================================")
print("")
// [결과 리턴 수행 실시]
return returnData
}
}
else {
print("")
print("====================================")
print("[C_Util >> getDateMinus() :: 두 날짜 차이 계산 에러]")
print("-------------------------------")
print("_bigDate [인풋 날짜_1] : ", _bigDate)
print("-------------------------------")
print("_smallDate [인풋 날짜_2] : ", _smallDate)
print("-------------------------------")
print("error [널 에러] : ", "비정상 데이터")
print("====================================")
print("")
// [결과 리턴 수행 실시]
return returnData
}
}
반응형
'Swift' 카테고리의 다른 글
Comments