Waktu dan tanggal adalah komponen penting dari banyak perangkat lunak, mulai dari utilitas manajemen waktu hingga aplikasi web. Sebagai seorang programmer, Anda perlu tahu cara memanipulasi waktu dan tanggal dalam bahasa apa pun yang Anda gunakan.

Di Go, waktu paket menggabungkan fungsi untuk manipulasi waktu dan tanggal. Anda dapat mengakses fungsi-fungsi ini di file sumber apa pun dengan mengimpor paket itu.

Jadi, apa artinya memanipulasi waktu dan tanggal, dan bagaimana Anda bisa memanipulasi waktu dan tanggal di Go?

Apa Itu Manipulasi Waktu dan Tanggal?

Menurut persyaratan program Anda, mungkin perlu untuk mengontrol, mengelola, atau menyesuaikan perilaku atau representasi waktu dan tanggal.

Bahasa pemrograman yang berbeda memiliki fungsi sendiri untuk manipulasi waktu dan tanggal. Bahasa Go memiliki kemampuan yang luas, berguna untuk tujuan ini.

Manipulasi waktu dan tanggal dapat mencakup:

  • Mendapatkan waktu saat ini dari suatu lokasi atau zona waktu.
  • Melakukan operasi aritmatika pada waktu dan tanggal.
  • Mengubah format input/output waktu dan tanggal.
instagram viewer

Untuk mulai memanipulasi waktu dan tanggal di aplikasi Go Anda, impor waktu paket di samping paket lain yang Anda gunakan.

impor (
"fmt"
"waktu"
)

Cara Mendapatkan Waktu dan Tanggal Saat Ini di Go

Kasus penggunaan umum untuk manipulasi waktu adalah memperoleh waktu lokal saat ini atau waktu saat ini dari zona waktu atau lokasi tertentu.

Untuk mendapatkan waktu dan tanggal dalam waktu lokal Anda atau di zona waktu atau lokasi tertentu, Anda dapat menggunakan waktu. Sekarang() dan waktu. LoadLocation() fungsi:

fungsi utama(){
// Dapatkan waktu dan tanggal saat ini dalam waktu Lokal
myTime := waktu. Sekarang()
fmt. Cetak("Waktu saat ini di ", waktuku. Lokasi(), " adalah: ", waktuku)

// Cara lain untuk mendapatkan waktu lokal
lokasi, _ := waktu. Lokasi Muat ("Lokal") // atau waktu. Lokasi Muat ("")
fmt. Cetak("Waktu saat ini di ", lokasi, " adalah: ", waktu. Sekarang().Di (lokasi))

// lokasi lain
lokasi, _ = waktu. Lokasi Muat ("Amerika/New_York")
fmt. Cetak("Waktu saat ini di ", lokasi, " adalah: ", waktuku. Di (lokasi))

// dapatkan waktu saat ini di Mountain Time Zone (MST)
lokasi, _ = waktu. Lokasi Muat ("MST")
fmt. Cetak("Waktu saat ini di ", lokasi, " adalah: ", waktuku. Di (lokasi))
}

Jalankan program di atas dengan jalankan nama file.go menghasilkan output berikut di terminal:

Metode LoadLocation tidak mendukung setiap singkatan lokasi dan zona waktu. Menurut Pergi dokumentasi, itu hanya mendukung lokasi di Basis data IANA.org.

Cara Mendapatkan Komponen Terpisah Dari Tanggal yang Diberikan

Anda bisa mendapatkan setiap komponen stempel waktu secara terpisah yang mirip dengan kapan bekerja dengan waktu dan tanggal dalam JavaScript.

Ada banyak cara untuk mencapai ini menggunakan Go's waktu fungsi. Bagian ini menggambarkan setiap metode.

Anda dapat menggunakan Tanggal() berfungsi untuk mendapatkan hari, bulan, dan tahun, dan Jam() berfungsi untuk mendapatkan jam, menit, dan detik. Sebagai contoh:

fungsiutama() {
waktu saya := waktu. Sekarang();
tahun, bulan, hari := myTime. Tanggal()
fmt. Println("Tahun :", tahun)
fmt. Println("Bulan :", bulan)
fmt. Println("Hari :", hari)

jam, menit, detik := myTime. Jam()
fmt. Println("Jam :", jam)
fmt. Println("Menit :", mnt)
fmt. Println("Detik :", detik)
}

Output menggambarkan bagian yang berbeda dari cap waktu:

Anda juga bisa mendapatkan unit stempel waktu satu per satu dengan waktu fungsi untuk masing-masing:

fungsiutama() {
waktu saya := waktu. Sekarang()

// dapatkan setiap unit dari Tahun ke Nanodetik
fmt. Println("Tahun :", myTime. Tahun())
fmt. Println("Bulan :", myTime. Bulan())
fmt. Println("Hari :", myTime. Hari())
fmt. Println("Jam :", myTime. Jam())
fmt. Println("Menit :", myTime. Menit())
fmt. Println("Detik :", myTime. Kedua())
fmt. Println("Nanodetik :", myTime. Nanodetik())
}

Seperti yang diilustrasikan oleh output, ini juga memberi Anda akses ke nanodetik:

Contoh hingga saat ini berfokus pada perolehan unit stempel waktu dari waktu saat ini. Anda dapat melakukan jenis tindakan yang sama pada stempel waktu yang tidak waktu. Sekarang().

Anda dapat mengekstrak tahun, bulan, hari, jam, menit, dan detik dari tanggal tertentu. Untuk melakukannya, Anda harus menginisialisasi objek tanggal baru atau mengurai tanggal dari string:

fungsiutama() {
// dapatkan masing-masing komponen waktu dari Tahun ke Nanodetik
// dari tanggal tertentu
waktumu := waktu. Tanggal(2020, 07, 1, 06, 32, 10, 0, waktu. UTC)
fmt. Println("Tahun :", Waktumu. Tahun())
fmt. Println("Bulan :", waktumu. Bulan())
fmt. Println("Hari :", waktumu. Hari())
fmt. Println("Jam :",WaktuAnda. Jam())
fmt. Println("Menit :", waktumu. Menit())
fmt. Println("Detik :", waktumu. Kedua())
fmt. Println("Nanodetik :", waktumu. Nanodetik())
// menggunakan fungsi Clock() untuk mendapatkan jam, menit, dan detik
yourHour, yourMin, yourSec := yourTime. Jam()
fmt. Println("Jam :", jam anda)
fmt. Println("Menit :",MinAnda)
fmt. Println("Detik :", yourSec)

// dapatkan waktu dan tanggal dari string
tanggalString := "2020-07-0106:32:10"
tata letak := "2006-01-0215:04:05" // format keluaran yang Anda inginkan
waktumu, _ = waktu. Parse (tata letak, dateString)
fmt. Println("Waktu Anda adalah: ", Waktu Anda)
fmt. Println("Tahun :", Waktumu. Tahun())
fmt. Println("Bulan :", waktumu. Bulan())
fmt. Println("Hari :", waktumu. Hari())
fmt. Println("Jam :",WaktuAnda. Jam())
fmt. Println("Menit :", waktumu. Menit())
fmt. Println("Detik :", waktumu. Kedua())
}

Kode ini menghasilkan output berikut:

Perhatikan bahwa Parse() menggunakan UTC secara default jika Anda tidak menentukan zona waktu dalam string tanggal.

Bagaimana Melakukan Operasi Aritmatika Dengan Tanggal dan Waktu

Operasi aritmatika adalah jenis manipulasi lain yang dapat Anda lakukan pada waktu dan tanggal di Go. Operasi sederhana seperti penambahan, pengurangan, dan perbedaan waktu semuanya mungkin.

Go memungkinkan Anda untuk menentukan waktu. Durasi nilai dengan semua satuan waktu dari waktu. Jam ke waktu. nanodetik. Anda dapat menggunakan nilai-nilai ini untuk menambah atau mengurangi waktu menggunakan Menambahkan(). Ada juga TambahkanTanggal() fungsi yang mengambil 3 parameter: tahun, bulan, dan hari untuk melakukan penambahan atau pengurangan.

Kode berikut menunjukkan penggunaan fungsi-fungsi ini:

fungsiutama() {
curWaktu := waktu. Sekarang()
curTime = curTime. Tambahkan (waktu. Jam) // menambahkan satu jam
fmt. Println("Waktu sekarang adalah: ", CurTime)
besok := curTime. Tambahkan (waktu. Jam * 24)
fmt. Println("Besok kali ini adalah: ",besok)
minggu depan := curTime. Tambahkan (waktu. Jam * 24 * 7)
fmt. Println("Kali ini minggu depan adalah: ", minggu depan)

// menggunakan AddDate (y, m, d)
nextTomorrow := curTime. TambahkanTanggal(0, 0, 2)
fmt. Println("Kali ini Besok berikutnya adalah: ", nextTomorrow)
bulan depan := curTime. TambahkanTanggal(0, 1, 0)
fmt. Println("Kali ini bulan depan adalah: ", bulan depan)
fiveYearsAndOneMonthAfter := curTime. TambahkanTanggal(5, 1, 0)
fmt. Println("Kali ini lima tahun satu bulan setelahnya adalah: ", fiveYearsAndOneMonthAfter)
}

Yang menghasilkan output berikut:

Anda juga dapat mengurangi waktu dengan Menambahkan() dan TambahkanTanggal() dengan melewatkan parameter negatif. Contohnya:

fungsiutama() {
curWaktu := waktu. Sekarang()

// kurangi satu hari menggunakan AddDate()
kemarin := curTime. TambahkanTanggal(0, 0, -1)
fmt. Println("Kali ini kemarin adalah: ",kemarin)

// kurangi satu bulan menggunakan Add()
bulan lalu := CurTime. Tambahkan (waktu. Jam * -24 * 30)
fmt. Println("Kali ini bulan lalu adalah: ", bulan lalu)
}

Menghasilkan output ini:

Meskipun Anda dapat menggunakan Menambahkan() dan TambahkanTanggal() untuk menemukan perbedaan antara tanggal, Go memiliki a Sub() fungsi yang bekerja sedikit berbeda:

fungsiutama() {
curTime = waktu. Sekarang()
masa lalu := waktu. Tanggal(2022, waktu. Desember, 25, 12, 0, 0, 0, waktu. UTC)
beda := masa lalu. Sub (waktu sekarang)
fmt. Println("Perbedaan antara sekarang dan yang lalu adalah: ", diff)
// dapatkan perbedaan dalam berbagai unit
tahun := ke dalam(perbedaan Jam() / 24 / 365)
fmt. Println("Tahun: ", tahun)
bulan := ke dalam(perbedaan Jam() / 24 / 30)
fmt. Println("Bulan: ", bulan)
hari := ke dalam(perbedaan Jam() / 24)
fmt. Println("Hari: ", hari)
jam := ke dalam(perbedaan Jam())
fmt. Println("Jam: ", jam)
// perbedaan Menit(), perbedaan. Detik(), perbedaan. Milidetik(), diff. Nanoseconds() juga mengembalikan unitnya
}

Kode ini menghasilkan output berikut:

Cara Mendapatkan Waktu dan Tanggal dalam Berbagai Format

Anda juga bisa mendapatkan output waktu dan tanggal dalam berbagai format menggunakan Format() fungsi. Berikut adalah beberapa gaya pemformatan umum:

fungsiutama() {
curTime = waktu. Sekarang()
// gaya pemformatan standar bawaan
fmt. Println("Waktu sekarang adalah: ", CurTime)
fmt. Println("Waktu saat ini dalam format RFC3339 adalah: ", curTime. Bentuk (waktu. RFC3339))
fmt. Println("Waktu saat ini dalam format RFC3339Nano adalah: ", curTime. Bentuk (waktu. RFC3339Nano))
fmt. Println("Waktu saat ini dalam format RFC1123 adalah: ", curTime. Bentuk (waktu. RFC1123))
fmt. Println("Waktu saat ini dalam format RFC1123Z adalah: ", curTime. Bentuk (waktu. RFC1123Z))
fmt. Println("Waktu saat ini dalam format RFC822 adalah: ", curTime. Bentuk (waktu. RFC822))
fmt. Println("Waktu saat ini dalam format RFC822Z adalah: ", curTime. Bentuk (waktu. RFC822Z))
fmt. Println("Waktu saat ini dalam format RFC850 adalah: ", curTime. Bentuk (waktu. RFC850))
fmt. Println("Waktu saat ini dalam format ANSIC adalah: ", curTime. Bentuk (waktu. ANSI))
fmt. Println("Waktu saat ini dalam format Unix adalah: ", curTime. Bentuk (waktu. UnixDate))
// gaya pemformatan khusus
// DD-MM-YYYY HH: MM: SS
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("02-01-200615:04:05"))
// BB-DD-YYYY HH: MM: SS
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("01-02-200615:04:05"))
// YYYY-MM-DD HH: MM: SS
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("2006-01-0215:04:05"))
// DD.MM.YYYY
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("02.01.2006"))
// DD/MM/YYYY
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("02/01/2006"))
// 01 Februari 2006
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("02 Jan 2006"))
// 01 Februari 2006 Senin
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("02 Februari 2006 Senin"))
// 01 Februari 2006 Sen 15:04:05
fmt. Println("Waktu saat ini dalam format kustom adalah: ", curTime. Format("02 Februari 2006 Senin 15:04:05"))
}

Berbagai jenis pemformatan ini menghasilkan output berikut:

Memanipulasi Waktu dan Tanggal di Go

Daftar manipulasi yang dapat Anda lakukan pada waktu dan tanggal hampir tidak ada habisnya. Bergantung pada cakupan aplikasi Anda, Anda mungkin perlu melakukan banyak operasi tanggal/waktu yang beragam.

Untuk kasus penggunaan apa pun yang mungkin Anda miliki, waktu paket sangat fungsional dan memiliki banyak metode bawaan.

Anda dapat menggunakan manipulasi tanggal dan waktu untuk membuat aplikasi perencana harian atau penjadwal tugas sederhana.