라이브 시작시간 UTC 적용

라이브 상세와 수정 화면에서 UTC 기준 시간을 표시한다.
날짜 표기는 OS 언어 설정의 기본 포맷을 사용한다.
This commit is contained in:
Yu Sung
2026-01-05 11:36:26 +09:00
parent 921c7e008c
commit 2f8331f2ff
5 changed files with 34 additions and 7 deletions

View File

@@ -15,6 +15,16 @@ extension Date {
return formatter.string(from: self) return formatter.string(from: self)
} }
func localizedDateTimeString(dateStyle: DateFormatter.Style = .medium,
timeStyle: DateFormatter.Style = .short) -> String {
let formatter = DateFormatter()
formatter.dateStyle = dateStyle
formatter.timeStyle = timeStyle
formatter.locale = Locale.autoupdatingCurrent
formatter.timeZone = TimeZone.current
return formatter.string(from: self)
}
func currentTimeMillis() -> Int64 { func currentTimeMillis() -> Int64 {
return Int64(self.timeIntervalSince1970 * 1000) return Int64(self.timeIntervalSince1970 * 1000)
} }

View File

@@ -95,4 +95,12 @@ extension String {
"time": time "time": time
] ]
} }
func parseUtcIsoDate() -> Date? {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
return formatter.date(from: self)
}
} }

View File

@@ -19,6 +19,7 @@ struct GetRoomDetailResponse: Decodable {
let tags: [String] let tags: [String]
let channelName: String? let channelName: String?
let beginDateTime: String let beginDateTime: String
let beginDateTimeUtc: String
let numberOfParticipants: Int let numberOfParticipants: Int
let numberOfParticipantsTotal: Int let numberOfParticipantsTotal: Int
let manager: GetRoomDetailManager let manager: GetRoomDetailManager

View File

@@ -94,7 +94,8 @@ struct LiveDetailView: View {
.padding(.top, 6.7) .padding(.top, 6.7)
HStack(spacing: 0) { HStack(spacing: 0) {
Text(room.beginDateTime.convertDateFormat(from: "yyyy.MM.dd EEE hh:mm a", to: "yyyy년 MM월 dd일 (E) a hh시 mm분", locale: Locale(identifier: "en_US_POSIX"))) let beginDateText = room.beginDateTimeUtc.parseUtcIsoDate()?.localizedDateTimeString() ?? room.beginDateTime
Text(beginDateText)
.font(.custom(Font.medium.rawValue, size: 12)) .font(.custom(Font.medium.rawValue, size: 12))
.foregroundColor(Color(hex: "bbbbbb")) .foregroundColor(Color(hex: "bbbbbb"))

View File

@@ -52,12 +52,19 @@ final class LiveRoomEditViewModel: ObservableObject {
notice = room!.notice notice = room!.notice
numberOfPeople = String(room!.numberOfParticipantsTotal) numberOfPeople = String(room!.numberOfParticipantsTotal)
if let beginDate = room!.beginDateTimeUtc.parseUtcIsoDate() {
reservationDate = beginDate
reservationTime = beginDate
} else {
let fromFormatter = DateFormatter() let fromFormatter = DateFormatter()
fromFormatter.dateFormat = "yyyy.MM.dd EEE hh:mm a" fromFormatter.dateFormat = "yyyy.MM.dd EEE hh:mm a"
fromFormatter.locale = Locale(identifier: "en_US_POSIX") fromFormatter.locale = Locale(identifier: "en_US_POSIX")
reservationDate = fromFormatter.date(from: room!.beginDateTime)! if let legacyDate = fromFormatter.date(from: room!.beginDateTime) {
reservationTime = fromFormatter.date(from: room!.beginDateTime)! reservationDate = legacyDate
reservationTime = legacyDate
}
}
let beginDate = reservationDate.convertDateFormat(dateFormat: "yyyy-MM-dd") let beginDate = reservationDate.convertDateFormat(dateFormat: "yyyy-MM-dd")
let beginTime = reservationTime.convertDateFormat(dateFormat: "HH:mm") let beginTime = reservationTime.convertDateFormat(dateFormat: "HH:mm")