Skip to content

Commit 5782638

Browse files
committed
[Feat/#25] Date fomat 함수 추가
1 parent e4629bb commit 5782638

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

Noostak_iOS/Noostak_iOS/Global/Utils/NSTDateUtility.swift

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,18 @@ public final class NSTDateUtility {
4747

4848
public extension NSTDateUtility {
4949
enum NSTDateFormatter {
50+
case yyyyMMddTHHmmss
5051
case yyyyMMddHHmmss
5152
case yyyyMMdd
5253
case yyyyMM
5354
case EE
55+
case HH
56+
case MMddEE
5457

5558
var format: String {
5659
switch self {
60+
case .yyyyMMddTHHmmss:
61+
return "yyyy-MM-dd'T'HH:mm:ss"
5762
case .yyyyMMddHHmmss:
5863
return "yyyy-MM-dd HH:mm:ss"
5964
case .yyyyMMdd:
@@ -62,6 +67,10 @@ public extension NSTDateUtility {
6267
return "yyyy-MM"
6368
case .EE:
6469
return "EE"
70+
case .HH:
71+
return "HH"
72+
case .MMddEE:
73+
return "EE\nMM/dd"
6574
}
6675
}
6776
}
@@ -77,3 +86,42 @@ public extension NSTDateUtility {
7786
}
7887
}
7988
}
89+
90+
func dateList(_ dateStrings: [String]) -> [String] {
91+
let formatter = NSTDateUtility(format: .yyyyMMddTHHmmss) // ISO 8601 형식
92+
let displayFormatter = NSTDateUtility(format: .MMddEE) // 출력 형식
93+
94+
return dateStrings.compactMap { dateString in
95+
switch formatter.date(from: dateString) {
96+
case .success(let date):
97+
return displayFormatter.string(from: date)
98+
case .failure(let error):
99+
print("Failed to parse date \(dateString): \(error.localizedDescription)")
100+
return nil
101+
}
102+
}
103+
}
104+
105+
func timeList(_ startTime: String, _ endTime: String) -> [String] {
106+
let formatter = NSTDateUtility(format: .yyyyMMddTHHmmss) // ISO 8601 형식
107+
var result: [String] = []
108+
109+
switch (formatter.date(from: startTime), formatter.date(from: endTime)) {
110+
case (.success(let start), .success(let end)):
111+
let calendar = Calendar.current
112+
var current = start
113+
114+
while current <= end {
115+
result.append(NSTDateUtility(format: .HH).string(from: current)) // 출력 형식
116+
if let nextHour = calendar.date(byAdding: .hour, value: 1, to: current) {
117+
current = nextHour
118+
} else {
119+
break
120+
}
121+
}
122+
default:
123+
print("Failed to parse start or end time.")
124+
return []
125+
}
126+
return result
127+
}

0 commit comments

Comments
 (0)