Skip to content

Commit 7f4495f

Browse files
[fix] 마감일 설정 관련 크래시 해결
toString 함수 오버라이딩 하여 해결 기본 toString() 구현(Object 의 toString)을 사용하고 있어서, 클래스 이름과 해시코드가 출력되고 있었음
1 parent 55a5ddc commit 7f4495f

File tree

3 files changed

+19
-7
lines changed
  • composeApp/src
    • androidMain/kotlin/com/nexters/bandalart/core/common/extension
    • commonMain/kotlin/com/nexters/bandalart/core/common/extension
    • iosMain/kotlin/com/nexters/bandalart/core/common/extension

3 files changed

+19
-7
lines changed

composeApp/src/androidMain/kotlin/com/nexters/bandalart/core/common/extension/String.android.kt

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ actual class LocalDateTime(private val datetime: java.time.LocalDateTime) {
88
actual val monthValue: Int get() = datetime.monthValue
99
actual val dayOfMonth: Int get() = datetime.dayOfMonth
1010

11+
actual override fun toString(): String {
12+
return datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm"))
13+
}
14+
1115
actual companion object {
1216
actual fun now(): LocalDateTime {
1317
return LocalDateTime(java.time.LocalDateTime.now())

composeApp/src/commonMain/kotlin/com/nexters/bandalart/core/common/extension/String.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ expect class LocalDateTime {
1010
val monthValue: Int
1111
val dayOfMonth: Int
1212

13+
override fun toString(): String
14+
1315
companion object {
1416
fun now(): LocalDateTime
1517
fun parse(date: String): LocalDateTime
@@ -31,7 +33,7 @@ fun String.toFormatDate(locale: Locale): String {
3133
}
3234

3335
fun String.toStringLocalDateTime(locale: Locale): String {
34-
val dueDate = LocalDateTime.parse(this.substring(0, 16), "yyyy-MM-dd'T'HH:mm")
36+
val dueDate = LocalDateTime.parse(this, "yyyy-MM-dd'T'HH:mm")
3537
return when (locale.language) {
3638
Language.ENGLISH -> "${dueDate.year}, ${dueDate.monthValue}/${dueDate.dayOfMonth}"
3739
Language.KOREAN -> "${dueDate.year}${dueDate.monthValue}${dueDate.dayOfMonth}"

composeApp/src/iosMain/kotlin/com/nexters/bandalart/core/common/extension/String.ios.kt

+12-6
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,18 @@ import platform.Foundation.NSCalendarUnitYear
88
import platform.Foundation.NSDate
99
import platform.Foundation.NSDateFormatter
1010

11-
actual class LocalDateTime(private val date: NSDate) {
11+
actual class LocalDateTime(private val datetime: NSDate) {
1212
private val calendar = NSCalendar.currentCalendar
1313

14-
actual val year: Int get() = calendar.component(NSCalendarUnitYear, date).toInt()
15-
actual val monthValue: Int get() = calendar.component(NSCalendarUnitMonth, date).toInt()
16-
actual val dayOfMonth: Int get() = calendar.component(NSCalendarUnitDay, date).toInt()
14+
actual val year: Int get() = calendar.component(NSCalendarUnitYear, datetime).toInt()
15+
actual val monthValue: Int get() = calendar.component(NSCalendarUnitMonth, datetime).toInt()
16+
actual val dayOfMonth: Int get() = calendar.component(NSCalendarUnitDay, datetime).toInt()
17+
18+
actual override fun toString(): String {
19+
val formatter = NSDateFormatter()
20+
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm"
21+
return formatter.stringFromDate(datetime)
22+
}
1723

1824
actual companion object {
1925
actual fun now(): LocalDateTime {
@@ -24,14 +30,14 @@ actual class LocalDateTime(private val date: NSDate) {
2430
val formatter = NSDateFormatter().apply {
2531
dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
2632
}
27-
return LocalDateTime(formatter.dateFromString(date)!!)
33+
return LocalDateTime(formatter.dateFromString(date) ?: NSDate())
2834
}
2935

3036
actual fun parse(date: String, pattern: String): LocalDateTime {
3137
val formatter = NSDateFormatter().apply {
3238
dateFormat = pattern
3339
}
34-
return LocalDateTime(formatter.dateFromString(date)!!)
40+
return LocalDateTime(formatter.dateFromString(date) ?: NSDate())
3541
}
3642
}
3743
}

0 commit comments

Comments
 (0)