1: Memulai dengan Carbon
1.1 Pengenalan
Paket golang sederhana, semantik, dan ramah pengembang untuk penanganan datetime.
Manfaat menggunakan Carbon untuk penanganan datetime:
- Ramah Pengembang: Carbon menawarkan antarmuka yang lancar dan ekspresif untuk menangani datetime yang intuitif bagi pengembang.
- Dukungan Internasionalisasi: Mendukung internasionalisasi, memungkinkan Anda untuk lokal mewakili tanggal Anda.
- Imutabilitas: Instansi Carbon tidak berubah, artinya dapat dengan aman dilewati tanpa modifikasi yang tidak diinginkan.
- Penanganan Zona Waktu: Carbon menyederhanakan kompleksitas dalam mengelola datetime di berbagai zona waktu.
- API Ekstensif: Menyediakan seperangkat fungsi komprehensif untuk membuat, mengurai, dan memformat tanggal dan waktu.
1.2 Panduan Instalasi
Instalasi untuk Go versi >= 1.16
Untuk menginstal paket Carbon untuk Go versi 1.16 atau di atasnya, gunakan perintah berikut:
go get -u github.com/golang-module/carbon/v2
Kemudian, impor paket ke file Go Anda:
import "github.com/golang-module/carbon/v2"
Instalasi untuk Go versi < 1.16
Untuk versi Go yang lebih lama, Anda masih dapat menginstal Carbon dengan menggunakan:
go get -u github.com/golang-module/carbon
Dan mengimpor paket seperti berikut:
import "github.com/golang-module/carbon"
Perhatikan bahwa v1 tidak lagi diperbarui secara aktif, tetapi akan dipelihara untuk perbaikan bug.
1.3 Menyiapkan Proyek Carbon Pertama Anda
Konfigurasi dasar Carbon: Setelah Carbon diinstal, Anda dapat mulai menggunakannya dengan hanya membuat sebuah instansi Carbon baru. Anda dapat menyesuaikan Carbon dengan mengatur tata letak global default, zona waktu, dan bahasa lokal untuk sesuaikan kebutuhan proyek Anda.
Mengatur tata letak global default, zona waktu, dan bahasa lokal:
carbon.SetDefault(carbon.Default{
Layout: carbon.RFC3339Layout,
Timezone: carbon.PRC,
Locale: "en",
})
Jika tidak diatur secara eksplisit, Carbon memiliki pengaturan default untuk ini — Tata letak: "2006-01-02 15:04:05"
, Zona waktu: Lokal
, Bahasa lokal: "en"
.
2: Operasi Dasar Carbon
2.1 Bekerja dengan Waktu Sekarang
Mengambil Tanggal dan Waktu Sekarang
Mengambil tanggal dan waktu saat ini adalah operasi dasar dalam banyak aplikasi. Dengan Carbon, Anda dapat memperoleh instansi datetime saat ini dengan memanggil metode carbon.Now()
. Mari kita lihat bagaimana cara mengambil waktu dan tanggal saat ini:
// Mengambil tanggal dan waktu saat ini sebagai instansi Carbon.
now := carbon.Now()
fmt.Println("Datetime saat ini:", now)
Menampilkan Hari Ini, Kemarin, dan Besok
Carbon menyediakan cara yang elegan untuk bekerja dengan tanggal yang terkait dengan hari ini. Untuk mendapatkan representasi tanggal dan waktu untuk hari ini, kemarin, dan besok, Anda dapat menggunakan metode carbon.Now()
, carbon.Yesterday()
, dan carbon.Tomorrow()
secara berturut-turut:
// Waktu saat ini
sekarang := carbon.Now()
fmt.Println("Hari ini:", sekarang.ToDateTimeString())
// Waktu kemarin
kemarin := carbon.Yesterday()
fmt.Println("Kemarin:", kemarin.ToDateTimeString())
// Waktu besok
besok := carbon.Tomorrow()
fmt.Println("Besok:", besok.ToDateTimeString())
Metode ini menyediakan cara ringkas untuk berinteraksi dengan referensi tanggal yang umum digunakan ini tanpa perhitungan manual.
Memformat dan Merepresentasikan Waktu Sekarang
Carbon memfasilitasi berbagai cara untuk memformat dan menampilkan datetime. Baik Anda memerlukan format standar seperti ISO8601, format kustom, atau versi lokal, Carbon memiliki metode yang sesuai untuk memenuhi kebutuhan ini.
Berikut cara Anda dapat memformat datetime saat ini dengan berbagai cara:
// Representasi datetime standar
fmt.Println("RFC3339:", now.ToRFC3339String())
fmt.Println("ISO8601:", now.ToIso8601String())
// Format datetime kustom
fmt.Println("Kustom:", now.Format("Senin, 02-Jan-06 15:04:05 MST"))
// Menggunakan tata letak yang sudah ditentukan
fmt.Println("Format ANSIC:", now.ToAnsicString())
fmt.Println("Format UnixDate:", now.ToUnixDateString())
fmt.Println("Format RubyDate:", now.ToRubyDateString())
fmt.Println("Format Kitchen:", now.ToKitchenString())
// Untuk pola kustom, gunakan metode Format
fmt.Println("Pola kustom:", now.Format("2006-01-02 3:04 PM"))
2.2 Pembuatan Instansi Carbon
Membuat instance dari penanda waktu
Di Go, penanganan penanda waktu sering terjadi, dan Carbon menyediakan metode yang intuitif untuk menanganinya. Sebuah penanda waktu adalah urutan karakter atau informasi terenkoded yang mengidentifikasi kapan suatu peristiwa tertentu terjadi, biasanya memberikan tanggal dan waktu hari, terkadang akurat hingga pecahan kecil dari detik.
Untuk membuat sebuah instance Carbon dari penanda waktu Unix, yang mewakili jumlah detik yang telah berlalu sejak epoch Unix (tengah malam pada tanggal 1 Januari 1970, UTC), Anda dapat menggunakan berbagai tingkat presisi:
// Membuat sebuah instance Carbon dari penanda waktu yang diberikan dengan presisi detik
c1 := carbon.CreateFromTimestamp(1596604455)
fmt.Println(c1.ToString()) // Menghasilkan: "202-08-05 13:14:15 +080 CST"
// Untuk presisi yang lebih tinggi (milidetik), gunakan `CreateFromTimestampMilli`
c2 := carbon.CreateFromTimestampMilli(1596604455999)
fmt.Println(c2.ToString()) // Menghasilkan: "202-08-05 13:14:15.999 +080 CST"
// Untuk mikrodetik, gunakan `CreateFromTimestampMicro`
c3 := carbon.CreateFromTimestampMicro(1596604455999999)
fmt.Println(c3.ToString()) // Menghasilkan: "202-08-05 13:14:15.999999 +080 CST"
// Dan untuk nanodetik, gunakan `CreateFromTimestampNano`
c4 := carbon.CreateFromTimestampNano(1596604455999999999)
fmt.Println(c4.ToString()) // Menghasilkan: "202-08-05 13:14:15.999999999 +080 CST"
Membuat instance dari komponen-komponen tanggal dan waktu
Jika Anda memiliki komponen-komponen individu dari sebuah tanggal, seperti tahun, bulan, dan hari atau komponen-komponen dari waktu seperti jam, menit, dan detik, Carbon juga dapat menanganinya.
// Membuat sebuah instance Carbon dari tanggal yang diberikan saja
date := carbon.CreateFromDate(2022, 12, 25)
fmt.Println(date.ToDateString()) // Menghasilkan: "2022-12-25"
// Membuat sebuah instance Carbon dari waktu yang diberikan saja
time := carbon.CreateFromTime(23, 59, 59)
fmt.Println(time.ToTimeString()) // Menghasilkan: "23:59:59"
// Membuat sebuah instance Carbon dari tanggal dan waktu
dateTime := carbon.CreateFromDateTime(2022, 12, 25, 23, 59, 59)
fmt.Println(dateTime.ToDateTimeString()) // Menghasilkan: "2022-12-25 23:59:59"
2.3 Memparssai String Waktu
Menangani representasi tanggal-waktu sebagai string adalah skenario umum. Carbon memudahkan dalam memparssai string menjadi instance Carbon.
Menggunakan carbon.Parse
untuk format waktu standar:
// Memparssai sebuah string dengan tanggal dan waktu
c := carbon.Parse("202-08-05 13:14:15", carbon.PRC)
if c.Error != nil {
fmt.Printf("Error: %v", c.Error)
} else {
fmt.Println(c.ToDateTimeString()) // Menghasilkan: "202-08-05 13:14:15"
}
// Memparssai string yang diformat RFC3339
rfc3339 := carbon.Parse("202-08-05T13:14:15+08:00")
fmt.Println(rfc3339.ToString()) // Menghasilkan: "202-08-05 13:14:15 +080 CST"
Format kustom dengan ParseByFormat
dan ParseByLayout
Anda juga dapat memparssai string yang dalam format spesifik yang tidak ditangani langsung oleh carbon.Parse
.
// Memparssai string waktu sebagai instance Carbon berdasarkan format
byFormat := carbon.ParseByFormat("202|08|05 13|14|15", "2006|01|02 15|04|05")
fmt.Println(byFormat.ToDateTimeString()) // Menghasilkan: "202-08-05 13:14:15"
// Memparssai string waktu sebagai instance Carbon berdasarkan layout
byLayout := carbon.ParseByLayout("202|08|05", "2006|01|02")
fmt.Println(byLayout.ToDateString()) // Menghasilkan: "202-08-05"
Menangani kesalahan
Selalu periksa bidang Error
untuk memastikan bahwa proses parssai telah berhasil:
invalidDate := carbon.Parse("Ini bukan tanggal", carbon.PRC)
if invalidDate.IsInvalid() {
fmt.Println("Kesalahan dalam memparssai tanggal:", invalidDate.Error)
}
Ingatlah, melakukan pemeriksaan kesalahan yang kokoh adalah bagian penting dalam bekerja dengan tanggal dan waktu untuk mencegah hasil yang tidak terduga atau kegagalan sistem.