Date & Time #
DateTime
adalah kelas di dalam Dart yang digunakan untuk bekerja dengan tanggal dan waktu. Kelas ini menyediakan berbagai fungsi dan properti untuk memanipulasi dan memformat tanggal serta waktu. Memahami cara kerja DateTime
dalam Dart sangat penting untuk pengembangan aplikasi yang melibatkan pengolahan tanggal dan waktu, seperti aplikasi kalender, pengingat, atau fitur-fitur terkait waktu lainnya.
Membuat Objek DateTime
#
Ada beberapa cara untuk membuat objek DateTime
di Dart:
Menggunakan Constructor Default #
Anda dapat membuat objek DateTime
dengan tanggal dan waktu yang spesifik menggunakan constructor default. Constructor ini membutuhkan tahun, bulan, dan hari sebagai parameter minimum, tetapi Anda juga dapat menentukan jam, menit, detik, dan milidetik.
Contoh:
DateTime tanggal = DateTime(2024, 8, 24); // 24 Agustus 2024
DateTime waktu = DateTime(2024, 8, 24, 14, 30, 0); // 24 Agustus 2024, pukul 14:30:00
Pada contoh di atas, tanggal
adalah objek DateTime
yang merepresentasikan tanggal 24 Agustus 2024, sementara waktu
merepresentasikan tanggal dan waktu spesifik pada 24 Agustus 2024, pukul 14:30:00.
Menggunakan Constructor DateTime.now()
#
Anda dapat membuat objek DateTime
yang merepresentasikan tanggal dan waktu saat ini (current date and time) menggunakan constructor DateTime.now()
.
Contoh:
DateTime sekarang = DateTime.now();
print(sekarang); // Output: Waktu saat ini, misalnya 2024-08-24 14:45:00.000
Pada contoh di atas, sekarang
adalah objek DateTime
yang berisi tanggal dan waktu saat ini.
Menggunakan Constructor DateTime.utc()
#
DateTime.utc()
digunakan untuk membuat objek DateTime
dalam waktu universal (UTC). Formatnya sama dengan constructor default, tetapi waktu yang disimpan adalah waktu UTC.
Contoh:
DateTime waktuUtc = DateTime.utc(2024, 8, 24, 14, 30, 0);
print(waktuUtc); // Output: 2024-08-24 14:30:00.000Z
Pada contoh di atas, waktuUtc
adalah objek DateTime
yang merepresentasikan tanggal dan waktu dalam UTC.
Menggunakan Constructor DateTime.parse()
#
DateTime.parse()
digunakan untuk membuat objek DateTime
dari string yang berisi tanggal dan waktu dalam format ISO 8601 atau format lain yang valid.
Contoh:
DateTime parsedDate = DateTime.parse('2024-08-24');
DateTime parsedDateTime = DateTime.parse('2024-08-24T14:30:00');
Pada contoh di atas, parsedDate
merepresentasikan tanggal 24 Agustus 2024, dan parsedDateTime
merepresentasikan tanggal 24 Agustus 2024, pukul 14:30:00.
Menggunakan DateTime.fromMillisecondsSinceEpoch()
#
Anda juga bisa membuat objek DateTime
menggunakan jumlah milidetik sejak epoch (1 Januari 1970, 00:00:00 UTC).
Contoh:
DateTime dateFromEpoch = DateTime.fromMillisecondsSinceEpoch(1629817200000);
print(dateFromEpoch); // Output: 2021-08-24 14:00:00.000
Pada contoh di atas, dateFromEpoch
merepresentasikan tanggal dan waktu yang dihitung berdasarkan milidetik sejak epoch.
Mengakses Properti DateTime
#
Setelah membuat objek DateTime
, Anda bisa mengakses berbagai properti untuk mendapatkan informasi tertentu tentang tanggal atau waktu tersebut.
Properti Umum:
year
: Mendapatkan tahun dari objekDateTime
.month
: Mendapatkan bulan (1-12).day
: Mendapatkan hari (1-31).hour
: Mendapatkan jam (0-23).minute
: Mendapatkan menit (0-59).second
: Mendapatkan detik (0-59).millisecond
: Mendapatkan milidetik (0-999).weekday
: Mendapatkan hari dalam seminggu (1 untuk Senin, 7 untuk Minggu).timeZoneOffset
: Mendapatkan perbedaan waktu dari UTC dalam durasi (biasanya dalam jam dan menit).isUtc
: Mengecek apakah objekDateTime
berada dalam waktu UTC.
Contoh:
DateTime tanggal = DateTime(2024, 8, 24, 14, 30, 0);
print('Tahun: ${tanggal.year}');
print('Bulan: ${tanggal.month}');
print('Hari: ${tanggal.day}');
print('Jam: ${tanggal.hour}');
print('Menit: ${tanggal.minute}');
print('Detik: ${tanggal.second}');
print('Hari dalam seminggu: ${tanggal.weekday}');
print('Zona waktu: ${tanggal.timeZoneOffset}');
Manipulasi DateTime
#
Dart menyediakan metode untuk memanipulasi objek DateTime
, seperti menambah atau mengurangi durasi waktu.
Menambahkan atau Mengurangi Durasi #
Anda dapat menggunakan metode add()
dan subtract()
untuk menambahkan atau mengurangi durasi pada objek DateTime
. Durasi ini diwakili oleh objek Duration
.
Contoh:
DateTime sekarang = DateTime.now();
DateTime besok = sekarang.add(Duration(days: 1));
DateTime satuJamYangLalu = sekarang.subtract(Duration(hours: 1));
print('Sekarang: $sekarang');
print('Besok: $besok');
print('Satu Jam yang Lalu: $satuJamYangLalu');
Pada contoh di atas, besok
adalah waktu satu hari setelah waktu saat ini, dan satuJamYangLalu
adalah waktu satu jam sebelum waktu saat ini.
Membandingkan DateTime
#
Anda bisa membandingkan dua objek DateTime
untuk menentukan mana yang lebih awal atau lebih akhir.
Contoh:
DateTime date1 = DateTime(2024, 8, 24);
DateTime date2 = DateTime(2024, 8, 25);
if (date1.isBefore(date2)) {
print('Date1 lebih awal dari Date2');
}
if (date2.isAfter(date1)) {
print('Date2 lebih akhir dari Date1');
}
if (date1.isAtSameMomentAs(date2)) {
print('Date1 dan Date2 berada pada waktu yang sama');
}
Pada contoh di atas, metode isBefore()
, isAfter()
, dan isAtSameMomentAs()
digunakan untuk membandingkan dua objek DateTime
.
Menghitung Durasi Antara Dua DateTime
#
Anda bisa menghitung perbedaan waktu antara dua objek DateTime
dengan menggunakan operator pengurangan (-
), yang akan menghasilkan objek Duration
.
Contoh:
DateTime mulai = DateTime(2024, 8, 24, 14, 0, 0);
DateTime akhir = DateTime(2024, 8, 24, 16, 0, 0);
Duration durasi = akhir.difference(mulai);
print('Durasi: ${durasi.inHours} jam ${durasi.inMinutes % 60} menit');
Pada contoh di atas, durasi
akan mengembalikan perbedaan waktu antara dua objek DateTime
, yang bisa diakses dalam jam, menit, detik, dan lainnya.
Memformat DateTime
sebagai String
#
Dart menyediakan beberapa cara untuk memformat objek DateTime
menjadi string yang dapat dibaca. Selain menggunakan metode bawaan seperti toString()
, Anda bisa menggunakan pustaka seperti intl
untuk memformat tanggal dan waktu dengan lebih fleksibel.
Menggunakan toString()
#
Metode toString()
menghasilkan representasi string dari objek DateTime
dalam format ISO 8601.
Contoh:
DateTime sekarang = DateTime.now();
print(sekarang.toString()); // Output: 2024-08-24 14:45:00.000
Menggunakan Pustaka intl
#
Pustaka intl
memberikan fleksibilitas dalam memformat tanggal dan waktu.
Contoh:
import 'package:intl/intl.dart';
void main() {
DateTime sekarang = DateTime.now();
String formattedDate = DateFormat('dd-MM-yyyy').format(sekarang);
String formattedTime = DateFormat('HH:mm:ss').format(sekarang);
print('Tanggal: $formattedDate');
print('Waktu: $formattedTime');
}
Pada contoh di atas, DateFormat
dari pustaka intl
digunakan untuk memformat objek
DateTime
menjadi string yang diinginkan.
Null Safety pada DateTime
#
Dalam Dart, dengan penerapan null safety, Anda perlu memperhatikan bahwa objek DateTime
mungkin null
. Ini dapat diatur dengan menandai variabel sebagai nullable (DateTime?
).
Contoh:
DateTime? mungkinNull;
if (mungkinNull != null) {
print('Tanggal: ${mungkinNull.year}');
} else {
print('Objek DateTime ini adalah null.');
}
Pada contoh di atas, kita memeriksa apakah objek DateTime
null
sebelum mengakses propertinya.
Kesimpulan #
DateTime
dalam Dart adalah alat yang sangat kuat untuk bekerja dengan tanggal dan waktu. Dengan menggunakan berbagai constructor, Anda dapat membuat objek DateTime
dari berbagai sumber. Properti DateTime
memungkinkan Anda mengakses bagian-bagian spesifik dari tanggal dan waktu, sementara metode seperti add()
, subtract()
, dan difference()
memungkinkan Anda untuk memanipulasi dan membandingkan waktu. Untuk memformat tanggal dan waktu, Dart menyediakan metode bawaan serta pustaka eksternal seperti intl
untuk fleksibilitas yang lebih besar. Memahami DateTime
secara mendetail akan sangat membantu dalam pengembangan aplikasi yang memerlukan pengolahan waktu dan tanggal.