Date & Time #
Dalam Kotlin, bekerja dengan tanggal dan waktu biasanya dilakukan menggunakan library bawaan Java java.time
, yang merupakan bagian dari API Date and Time yang diperkenalkan di Java 8. Library ini menyediakan berbagai kelas dan metode untuk menangani tanggal, waktu, zona waktu, dan durasi dengan cara yang lebih mudah dan intuitif dibandingkan API tanggal dan waktu sebelumnya.
Berikut adalah penjelasan mengenai beberapa kelas utama dalam java.time
dan berbagai operasi yang dapat dilakukan dengan tanggal dan waktu di Kotlin.
Kelas Utama untuk Date and Time #
LocalDate
: Mewakili tanggal tanpa informasi waktu (hanya tahun, bulan, dan hari).LocalTime
: Mewakili waktu tanpa informasi tanggal (hanya jam, menit, detik, dan nanodetik).LocalDateTime
: Mewakili kombinasi tanggal dan waktu tanpa zona waktu.ZonedDateTime
: Mewakili tanggal dan waktu dengan zona waktu.Instant
: Mewakili satu titik waktu pada skala universal, biasa digunakan untuk timestamp.
Membuat Objek Date and Time #
Anda dapat membuat objek LocalDate
, LocalTime
, dan LocalDateTime
dengan beberapa cara:
import java.time.LocalDate
import java.time.LocalTime
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.ZonedDateTime
// Membuat LocalDate
val today: LocalDate = LocalDate.now()
val specificDate: LocalDate = LocalDate.of(2024, 8, 24)
// Membuat LocalTime
val currentTime: LocalTime = LocalTime.now()
val specificTime: LocalTime = LocalTime.of(10, 30, 45)
// Membuat LocalDateTime
val currentDateTime: LocalDateTime = LocalDateTime.now()
val specificDateTime: LocalDateTime = LocalDateTime.of(2024, 8, 24, 10, 30, 45)
// Membuat ZonedDateTime
val currentZonedDateTime: ZonedDateTime = ZonedDateTime.now()
val specificZonedDateTime: ZonedDateTime = ZonedDateTime.of(2024, 8, 24, 10, 30, 45, 0, ZoneId.of("UTC"))
Operasi pada Date and Time #
Anda dapat melakukan berbagai operasi pada objek tanggal dan waktu seperti penambahan, pengurangan, dan perbandingan.
Penambahan dan Pengurangan #
Anda dapat menambahkan atau mengurangi tanggal dan waktu menggunakan metode seperti plusDays
, minusDays
, plusWeeks
, minusWeeks
, dll.
val tomorrow: LocalDate = today.plusDays(1)
val lastWeek: LocalDate = today.minusWeeks(1)
val nextHour: LocalTime = currentTime.plusHours(1)
Perbandingan #
Objek tanggal dan waktu dapat dibandingkan menggunakan operator pembanding seperti isBefore
, isAfter
, dan equals
.
if (specificDate.isBefore(today)) {
println("Specific date is before today")
}
if (currentDateTime.isAfter(specificDateTime)) {
println("Current date-time is after the specific date-time")
}
Konversi #
Anda dapat mengonversi antara berbagai jenis objek tanggal dan waktu. Misalnya, dari LocalDateTime
ke ZonedDateTime
.
val zonedDateTime: ZonedDateTime = currentDateTime.atZone(ZoneId.of("UTC"))
val localDateTime: LocalDateTime = zonedDateTime.toLocalDateTime()
Format dan Parsing #
Anda dapat memformat objek tanggal dan waktu ke dalam string atau mem-parsing string ke objek tanggal dan waktu menggunakan DateTimeFormatter
.
import java.time.format.DateTimeFormatter
val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm")
val formattedDateTime: String = currentDateTime.format(formatter)
val parsedDateTime: LocalDateTime = LocalDateTime.parse("24-08-2024 10:30", formatter)
Durasi dan Periode #
Anda dapat menghitung durasi atau periode antara dua titik waktu menggunakan Duration
(untuk waktu) dan Period
(untuk tanggal).
import java.time.Duration
import java.time.Period
val duration: Duration = Duration.between(LocalTime.of(9, 0), LocalTime.of(17, 0))
println("Duration in hours: ${duration.toHours()}") // Output: 8
val period: Period = Period.between(LocalDate.of(2024, 8, 1), LocalDate.of(2024, 8, 24))
println("Period in days: ${period.days}") // Output: 23
Menggunakan Instant
untuk Timestamp
#
Instant
sering digunakan untuk menyimpan timestamp karena mewakili titik waktu tertentu pada skala universal (UTC).
val timestamp: Instant = Instant.now()
println("Current timestamp: $timestamp")
// Menghitung durasi antara dua instan
val earlierTimestamp = timestamp.minusSeconds(3600)
val timeElapsed: Duration = Duration.between(earlierTimestamp, timestamp)
println("Time elapsed in minutes: ${timeElapsed.toMinutes()}") // Output: 60
Kesimpulan #
Kotlin, melalui API java.time
, menyediakan berbagai alat yang kuat dan fleksibel untuk bekerja dengan tanggal dan waktu. Anda dapat membuat, memanipulasi, membandingkan, dan memformat objek tanggal dan waktu dengan mudah, serta menghitung durasi dan periode antara dua titik waktu. Ini menjadikan pengelolaan tanggal dan waktu di Kotlin lebih intuitif dan efisien.