Saya memiliki time.Time
nilai yang didapat dari time.Now()
dan saya ingin mendapatkan waktu lain tepatnya 1 bulan yang lalu.
Saya tahu pengurangan dimungkinkan dengan time.Sub()
(yang menginginkan yang lain time.Time
), tetapi itu akan menghasilkan a time.Duration
dan saya membutuhkannya sebaliknya.
Sub
untuk mengurangi waktu. Duh!Menanggapi komentar Thomas Browne, karena jawaban lnmx hanya berfungsi untuk mengurangkan tanggal, berikut ini adalah modifikasi kodenya yang berfungsi untuk mengurangi waktu dari suatu waktu.
Menghasilkan:
Tidak menyebutkan, Anda juga dapat menggunakan
time.Hour
atautime.Second
bukantime.Minute
sesuai kebutuhan Anda.Taman bermain: https://play.golang.org/p/DzzH4SA3izp
sumber
ParseDuration
untuk nilai statis! Cukup gunakan-10 * time.Minute
, untuk itulah konstanta itu didefinisikan. Misalnya sajatime.Now().Add(-10 * time.Minute)
semua yang Anda butuhkan.now.Add(-10 * time.Minute)
menjadinow.Add(time.Duration(-10) * time.Minute)
jika Anda mendapatkan kesalahan saat mengalikan durasi dengan nilai int ...Anda dapat meniadakan
time.Duration
:Anda bahkan dapat membandingkan
time.Duration
terhadap0
:Anda dapat melihat contoh yang berfungsi di http://play.golang.org/p/ml7svlL4eW
sumber
-1 * dur
akan berfungsi, tetapid := -1 ; dur = d * dur
akan menghasilkan kesalahan: "jenis tidak cocok int dan waktu.Duration"Ada
time.ParseDuration
yang akan dengan senang hati menerima durasi negatif, sesuai manual . Jika tidak, tidak perlu meniadakan durasi di mana Anda bisa mendapatkan durasi yang tepat di tempat pertama.Misalnya, saat Anda perlu mengurangi satu setengah jam, Anda dapat melakukannya seperti ini:
https://play.golang.org/p/63p-T9uFcZo
sumber