π‘ μ½νλ¦°μμ λ μ§μ μκ°μ λ€λ£¨λ ν΄λμ€μ λνμ¬ νμ΅νμμ΅λλ€! Javaμ APIμ Kotlin μ체 λΌμ΄λΈλ¬λ¦¬λ₯Ό λΉκ΅νμμ΅λλ€.
Java API
- Kotlinμ JVM μΈμ΄μ΄κΈ° λλ¬Έμ Javaμ λ μ§ λ° μκ° APIλ₯Ό μ§μ μ¬μ©ν μ μμ΅λλ€.
- Java 8μμ λμ λ java.time ν¨ν€μ§μ APIλ₯Ό λ§μ΄ μ¬μ©ν©λλ€.
java.time ν¨ν€μ§
- Java 8μμ λμ
λ λ μ§μ μκ° κ΄λ ¨ APIλ‘, νλμ μΈ λ°©μμΌλ‘ λ μ§μ μκ°μ μ²λ¦¬ν μ μκ² ν΄μ€λλ€.
- [LocalDate] : λ μ§(λ , μ, μΌ)μ νννλ ν΄λμ€
- [LocalTime] : μκ°(μ, λΆ, μ΄, λλ Έμ΄) μ νννλ ν΄λμ€
- [LocalDateTime] : λ μ§μ μκ° λͺ¨λ νννλ ν΄λμ€
- [Period] : λ λ μ§ κ°μ μ°¨μ΄λ₯Ό νννλ ν΄λμ€
- [Duration] : λ μκ° κ°μ μ°¨μ΄λ₯Ό νννλ ν΄λμ€
- μ΄ μ΄μΈμλ μκ°λ μ 보λ₯Ό νννλ ZonedDateTimeμ΄ μμ΅λλ€.
import java.time.LocalDate
import java.time.LocalTime
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
fun main() {
val currentDate = LocalDate.now()
val currentTime = LocalTime.now()
val currentDateTime = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
println("νμ¬ λ μ§: $currentDate")
println("νμ¬ μκ°: $currentTime")
println("νμ¬ λ μ§μ μκ°: ${currentDateTime.format(formatter)}")
}
Calendar
- Java 8 μ΄μ μλ java.util.Dateμ java.util.Calendar ν΄λμ€λ₯Ό μ¬μ©νμ¬ λ μ§μ μκ°μ μ²λ¦¬νμμ΅λλ€.
- νμ§λ§ μ ν΄λμ€λ€μ μ€κ³μμ λ¬Έμ λ‘ μΈν΄ μ¬μ©μ΄ λ²κ±°λ‘μ ꡬμ APIλ‘ κ°μ£Όλκ³ μμ΅λλ€.
import java.util.Date
import java.util.Calendar
fun main() {
val date = Date() // νμ¬ λ μ§μ μκ°μ κ°μ Έμ΄
val calendar = Calendar.getInstance()
println("νμ¬ λ μ§μ μκ° (Date): $date")
println("νμ¬ λ μ§μ μκ° (Calendar): ${calendar.time}")
}
java.util.Dateμ java.util.Calendar λ¬Έμ μ
- μ ν΄λμ€λ€μ Javaμ μ΄κΈ° λ²μ μ λ μ§μ μκ°μ μ²λ¦¬νκΈ° μν΄ λμ λ ν΄λμ€μ λλ€.
- μ΄ ν΄λμ€λ₯Ό μ¬μ©νλ©΄μ μλμ κ°μ λ¬Έμ μ μ΄ λ°μν μ μμ΅λλ€.
- [λΆλ³μ±] : λ ν΄λμ€ λ€ λ³κ²½ κ°μΌν κ°μ²΄λ₯Ό μμ±νλ―λ‘, λ©ν° μ€λ λ νκ²½μμ λ¬Έμ λ₯Ό μΌμΌν¬ μ μμ΅λλ€.
- [API μ€κ³] : λ ν΄λμ€μ APIλ μ§κ΄μ μ΄μ§ μκ³ μ¬μ©νκΈ° μ΄λ ΅μ΅λλ€.
- ex> μμ 0μλΆν° μμνλ©°, 1μμ΄ 0, 12μμ΄ 11
Kotlin λΌμ΄λΈλ¬λ¦¬
- μ½νλ¦°μμλ μ체μ μΌλ‘ λ μ§μ μκ°μ μ²λ¦¬νκΈ° μν kotlinx-datetime λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡ν©λλ€.
- μ΄ λΌμ΄λΈλ¬λ¦¬λ Kotlin Multiplatform νλ‘μ νΈμμλ μ¬μ©ν μ μμΌλ©°, java.timeκ³Ό μ μ¬ν ꡬ쑰λ₯Ό κ°μ§κ³ μμ΅λλ€.
kotlinx-datetime ν¨ν€μ§
- [LocalDate] : λ μ§(λ , μ, μΌ)λ₯Ό νννλ ν΄λμ€
- [LocalDateTime] : λ μ§μ μκ°μ λͺ¨λ νννλ ν΄λμ€
- [Instant] : νΉμ μμ μ λνλ΄λ ν΄λμ€
- [TimeZone] : μκ°λλ₯Ό λνλ΄λ ν΄λμ€
kotlinx-datetime μμ‘΄μ± μΆκ°
- kotlinx-datetime λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νκΈ° μν΄μλ Gradle νμΌμ μμ‘΄μ±μ μΆκ°ν΄μΌ ν©λλ€.
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
}
kotlinx-datetime νμ©νκΈ°
import kotlinx.datetime.*
fun main() {
// νμ¬ λ μ§μ μκ° κ°μ Έμ€κΈ°
val currentDate = LocalDate.now()
val currentDateTime = LocalDateTime.now()
// νμ¬ μκ°λλ₯Ό μ¬μ©νμ¬ νΉμ μμ (Instant) μμ±
val currentInstant = Clock.System.now()
// νμ¬ μμ€ν
μ μκ°λ κ°μ Έμ€κΈ°
val currentZone = TimeZone.currentSystemDefault()
// Instantλ₯Ό LocalDateTimeμΌλ‘ λ³ν (νμ¬ μκ°λ)
val localDateTimeFromInstant = currentInstant.toLocalDateTime(currentZone)
// UTC μκ°λλ‘ λ³ν
val utcZone = TimeZone.UTC
val utcDateTime = currentInstant.toLocalDateTime(utcZone)
// μΆλ ₯
println("νμ¬ λ μ§: $currentDate")
println("νμ¬ μκ°: $currentDateTime")
println("νμ¬ μμ (Instant): $currentInstant")
println("νμ¬ μμ μμμ LocalDateTime: $localDateTimeFromInstant")
println("UTC μκ°λμμμ LocalDateTime: $utcDateTime")
}
μ 리
- Kotlinμμ λ μ§μ μκ°μ μ²λ¦¬ν λ Javaμ java.time APIλ₯Ό νμ©ν μ μμ΅λλ€.
- Kotlin νΉν λΌμ΄λΈλ¬λ¦¬μΈ kotlinx-datetimeμ μ¬μ©ν μ μμ΅λλ€.
- νλ‘μ νΈμ μꡬμ¬νκ³Ό νλ«νΌ(Android, JVM, Multiplatform λ±)μ λ°λΌ μ μ νκ² μ¬μ©ν΄μΌ ν©λλ€ !