From f44eacaf52a4398614eae36af3567e09ef966308 Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 21 Jan 2026 15:48:25 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8,=20=EC=83=81=EC=84=B8,=20=EC=98=88=EC=95=BD?= =?UTF-8?q?=20-=20=ED=83=80=EC=9E=84=EC=A1=B4=EC=9D=84=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=ED=95=B4=EC=84=9C=20=EB=82=B4=EB=A0=A4=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=20beginDateTime=EC=9D=84=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=ED=95=98=EA=B3=A0=20UTC=20=ED=83=80=EC=9E=84=EC=A1=B4=EC=9D=B4?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9=EB=90=9C=20beginDateTimeUtc=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../profile/GetCreatorProfileResponse.kt | 1 - .../explorer/profile/UserProfileActivity.kt | 6 ++-- .../sodalive/extensions/StringExtensions.kt | 6 +++- .../vividnext/sodalive/home/HomeFragment.kt | 6 ++-- .../sodalive/live/GetRoomListResponse.kt | 1 - .../vividnext/sodalive/live/LiveFragment.kt | 6 ++-- .../live/now/all/LiveNowAllActivity.kt | 6 ++-- .../GetLiveReservationResponse.kt | 2 +- .../LiveReservationCancelActivity.kt | 8 ++++- .../LiveReservationStatusAdapter.kt | 8 ++++- .../live/room/detail/GetRoomDetailResponse.kt | 1 - .../room/detail/LiveRoomDetailFragment.kt | 33 +++---------------- .../live/room/update/LiveRoomEditViewModel.kt | 14 ++++---- 13 files changed, 49 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt index 00054cf6..7aa462a6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt @@ -69,7 +69,6 @@ data class LiveRoomResponse( @SerializedName("title") val title: String, @SerializedName("content") val content: String, @SerializedName("isPaid") val isPaid: Boolean, - @SerializedName("beginDateTime") val beginDateTime: String, @SerializedName("beginDateTimeUtc") val beginDateTimeUtc: String, @SerializedName("coverImageUrl") val coverImageUrl: String, @SerializedName("isAdult") val isAdult: Boolean, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt index 26d3446d..4db9392a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt @@ -74,6 +74,7 @@ import org.koin.android.ext.android.inject import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import java.util.TimeZone class UserProfileActivity : BaseActivity( ActivityUserProfileBinding::inflate @@ -1093,8 +1094,9 @@ class UserProfileActivity : BaseActivity( liveViewModel.enterRoom(roomId, onEnterRoomSuccess) } } else { - val beginDateFormat = SimpleDateFormat("yyyy.MM.dd EEE hh:mm a", Locale.ENGLISH) - val beginDate = beginDateFormat.parse(it.beginDateTime)!! + val beginDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH) + beginDateFormat.timeZone = TimeZone.getTimeZone("UTC") + val beginDate = beginDateFormat.parse(it.beginDateTimeUtc)!! val now = Date() val dateFormat = SimpleDateFormat("yyyy-MM-dd, HH:mm", Locale.getDefault()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt b/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt index 8530fc22..8b627699 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt @@ -13,10 +13,14 @@ fun String.convertDateFormat( from: String, to: String, inputLocale: Locale = Locale.getDefault(), - outputLocale: Locale = Locale.getDefault() + outputLocale: Locale = Locale.getDefault(), + inputTimeZone: TimeZone = TimeZone.getDefault(), + outputTimeZone: TimeZone = TimeZone.getDefault() ): String { val fromDateFormat = SimpleDateFormat(from, inputLocale) + fromDateFormat.timeZone = inputTimeZone val toDateFormat = SimpleDateFormat(to, outputLocale) + toDateFormat.timeZone = outputTimeZone var outputDateString = "" val date = fromDateFormat.parse(this) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt index b52cae8e..c1875571 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeFragment.kt @@ -65,6 +65,7 @@ import org.koin.android.ext.android.inject import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import java.util.TimeZone @OptIn(UnstableApi::class) class HomeFragment : BaseFragment(FragmentHomeBinding::inflate) { @@ -1254,8 +1255,9 @@ class HomeFragment : BaseFragment(FragmentHomeBinding::infl }, 300) } } else { - val beginDateFormat = SimpleDateFormat("yyyy.MM.dd EEE hh:mm a", Locale.ENGLISH) - val beginDate = beginDateFormat.parse(it.beginDateTime)!! + val beginDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH) + beginDateFormat.timeZone = TimeZone.getTimeZone("UTC") + val beginDate = beginDateFormat.parse(it.beginDateTimeUtc)!! val now = Date() val dateFormat = SimpleDateFormat("yyyy-MM-dd, HH:mm", Locale.getDefault()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/GetRoomListResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/GetRoomListResponse.kt index 27d35187..625f06b6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/GetRoomListResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/GetRoomListResponse.kt @@ -8,7 +8,6 @@ data class GetRoomListResponse( @SerializedName("roomId") val roomId: Long, @SerializedName("title") val title: String, @SerializedName("content") val content: String, - @SerializedName("beginDateTime") val beginDateTime: String, @SerializedName("beginDateTimeUtc") val beginDateTimeUtc: String, @SerializedName("numberOfParticipate") val numberOfParticipate: Int, @SerializedName("numberOfPeople") val numberOfPeople: Int, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt index f9e55581..aeb30606 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveFragment.kt @@ -61,6 +61,7 @@ import org.koin.android.ext.android.inject import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import java.util.TimeZone import kotlin.math.roundToInt @UnstableApi @@ -902,8 +903,9 @@ class LiveFragment : BaseFragment(FragmentLiveBinding::infl }, 300) } } else { - val beginDateFormat = SimpleDateFormat("yyyy.MM.dd EEE hh:mm a", Locale.ENGLISH) - val beginDate = beginDateFormat.parse(it.beginDateTime)!! + val beginDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH) + beginDateFormat.timeZone = TimeZone.getTimeZone("UTC") + val beginDate = beginDateFormat.parse(it.beginDateTimeUtc)!! val now = Date() val dateFormat = SimpleDateFormat("yyyy-MM-dd, HH:mm", Locale.getDefault()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt index 3de09673..072b0a9d 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt @@ -27,6 +27,7 @@ import org.koin.android.ext.android.inject import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import java.util.TimeZone @UnstableApi class LiveNowAllActivity : BaseActivity( @@ -140,8 +141,9 @@ class LiveNowAllActivity : BaseActivity( viewModel.enterRoom(roomId, onEnterRoomSuccess) } } else { - val beginDateFormat = SimpleDateFormat("yyyy.MM.dd EEE hh:mm a", Locale.ENGLISH) - val beginDate = beginDateFormat.parse(it.beginDateTime)!! + val beginDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH) + beginDateFormat.timeZone = TimeZone.getTimeZone("UTC") + val beginDate = beginDateFormat.parse(it.beginDateTimeUtc)!! val now = Date() val dateFormat = SimpleDateFormat("yyyy-MM-dd, HH:mm", Locale.getDefault()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/GetLiveReservationResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/GetLiveReservationResponse.kt index afdf22a8..9c7ca695 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/GetLiveReservationResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/GetLiveReservationResponse.kt @@ -14,6 +14,6 @@ data class GetLiveReservationResponse( @SerializedName("coverImageUrl") val coverImageUrl: String, @SerializedName("price") val price: Int, @SerializedName("masterNickname") val masterNickname: String, - @SerializedName("beginDateTime") val beginDateTime: String, + @SerializedName("beginDateTimeUtc") val beginDateTimeUtc: String, @SerializedName("cancelable") val cancelable: Boolean, ) : Parcelable diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/LiveReservationCancelActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/LiveReservationCancelActivity.kt index fe3127dd..56c666ba 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/LiveReservationCancelActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/reservation_status/LiveReservationCancelActivity.kt @@ -16,10 +16,12 @@ import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder import kr.co.vividnext.sodalive.databinding.ActivityLiveReservationCancelBinding +import kr.co.vividnext.sodalive.extensions.convertDateFormat import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.main.MainActivity import kr.co.vividnext.sodalive.mypage.can.status.CanStatusActivity import org.koin.android.ext.android.inject +import java.util.TimeZone class LiveReservationCancelActivity : BaseActivity( ActivityLiveReservationCancelBinding::inflate @@ -146,7 +148,11 @@ class LiveReservationCancelActivity : BaseActivity Unit @@ -22,7 +24,11 @@ class LiveReservationStatusAdapter( fun bind(item: GetLiveReservationResponse) { val context = binding.root.context - binding.tvDate.text = item.beginDateTime + binding.tvDate.text = item.beginDateTimeUtc.convertDateFormat( + from = "yyyy-MM-dd'T'HH:mm:ss", + to = "yyyy.MM.dd EEE hh:mm a", + inputTimeZone = TimeZone.getTimeZone("UTC") + ) binding.tvNickname.text = item.masterNickname binding.tvTitle.text = item.title binding.ivProfile.load(item.coverImageUrl) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt index 28272fe1..7eab12ff 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt @@ -18,7 +18,6 @@ data class GetRoomDetailResponse( @SerializedName("password") val password: Int?, @SerializedName("tags") val tags: List, @SerializedName("channelName") val channelName: String?, - @SerializedName("beginDateTime") val beginDateTime: String, @SerializedName("beginDateTimeUtc") val beginDateTimeUtc: String, @SerializedName("isNotification") val isNotification: Boolean, @SerializedName("numberOfParticipants") val numberOfParticipants: Int, diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt index 5460af99..e356a8a0 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt @@ -26,10 +26,9 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.databinding.FragmentLiveRoomDetailBinding import kr.co.vividnext.sodalive.databinding.ItemLiveDetailUserSummaryBinding import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity +import kr.co.vividnext.sodalive.extensions.convertDateFormat import kr.co.vividnext.sodalive.extensions.dpToPx import org.koin.android.ext.android.inject -import java.text.SimpleDateFormat -import java.util.Locale import java.util.TimeZone class LiveRoomDetailFragment( @@ -124,10 +123,10 @@ class LiveRoomDetailFragment( } binding.tvTitle.text = response.title - binding.tvDate.text = formatUtcToLocal( - utcDateString = response.beginDateTimeUtc, - fromFormat = "yyyy-MM-dd'T'HH:mm:ss", - toFormat = getString(R.string.screen_live_room_detail_date_format) + binding.tvDate.text = response.beginDateTimeUtc.convertDateFormat( + from = "yyyy-MM-dd'T'HH:mm:ss", + to = getString(R.string.screen_live_room_detail_date_format), + inputTimeZone = TimeZone.getTimeZone("UTC") ) if (response.price > 0) { @@ -368,26 +367,4 @@ class LiveRoomDetailFragment( startActivity(shareIntent) } } - - private fun formatUtcToLocal( - utcDateString: String, - fromFormat: String, - toFormat: String - ): String { - val fromDateFormat = SimpleDateFormat(fromFormat, Locale.getDefault()) - fromDateFormat.timeZone = TimeZone.getTimeZone("UTC") - val toDateFormat = SimpleDateFormat(toFormat, Locale.getDefault()) - toDateFormat.timeZone = TimeZone.getDefault() - - return try { - val date = fromDateFormat.parse(utcDateString) - if (date != null) { - toDateFormat.format(date) - } else { - utcDateString - } - } catch (e: Exception) { - utcDateString - } - } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt index 74fd3421..3b5fd9e7 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt @@ -136,14 +136,16 @@ class LiveRoomEditViewModel( fun setRoomDetail(roomDetail: GetRoomDetailResponse) { this.roomDetail = roomDetail - val date = roomDetail.beginDateTime.convertDateFormat( - from = "yyyy.MM.dd EEE hh:mm a", - to = "yyyy.MM.dd" + val date = roomDetail.beginDateTimeUtc.convertDateFormat( + from = "yyyy-MM-dd'T'HH:mm:ss", + to = "yyyy.MM.dd", + inputTimeZone = TimeZone.getTimeZone("UTC") ) - val time = roomDetail.beginDateTime.convertDateFormat( - from = "yyyy.MM.dd EEE hh:mm a", - to = "a hh:mm" + val time = roomDetail.beginDateTimeUtc.convertDateFormat( + from = "yyyy-MM-dd'T'HH:mm:ss", + to = "a hh:mm", + inputTimeZone = TimeZone.getTimeZone("UTC") ) _reservationDateLiveData.value = date