@@ -47,13 +47,18 @@ public final class NSTDateUtility {
47
47
48
48
public extension NSTDateUtility {
49
49
enum NSTDateFormatter {
50
+ case yyyyMMddTHHmmss
50
51
case yyyyMMddHHmmss
51
52
case yyyyMMdd
52
53
case yyyyMM
53
54
case EE
55
+ case HH
56
+ case MMddEE
54
57
55
58
var format : String {
56
59
switch self {
60
+ case . yyyyMMddTHHmmss:
61
+ return " yyyy-MM-dd'T'HH:mm:ss "
57
62
case . yyyyMMddHHmmss:
58
63
return " yyyy-MM-dd HH:mm:ss "
59
64
case . yyyyMMdd:
@@ -62,6 +67,10 @@ public extension NSTDateUtility {
62
67
return " yyyy-MM "
63
68
case . EE:
64
69
return " EE "
70
+ case . HH:
71
+ return " HH "
72
+ case . MMddEE:
73
+ return " EE \n MM/dd "
65
74
}
66
75
}
67
76
}
@@ -77,3 +86,42 @@ public extension NSTDateUtility {
77
86
}
78
87
}
79
88
}
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