Golang : minus time with Time.Add() or Time.AddDate() functions to calculate past date
Let's go back into history for this tutorial's sake. Somehow you have invented a time traveling device powered by Golang and you are wanted to calculate the time when you suppose to end up in the past.
However, Golang has Time.Add()
function to calculate future dates and no Minus()
function to calculate past dates. So, how does one calculates past dates in Golang?
Solution:
Yes, the word Add
can be very limiting; however, do not let the Time.Add()
function name fools you. You still can calculate the past date by adding the present with a negative value. If Time.Add()
is to cumbersome. You can use Time.AddDate()
function as well.
For example:
package main
import (
"fmt"
"time"
)
func main() {
today := time.Now()
fmt.Println("Today is : ", today.Format("2006-01-02 03:04:00pm"))
// travel back 1 day
oneDay := time.Hour * -24 // minus 1 day
yesterday := today.Add(oneDay) // minus 1 day
fmt.Println("Yesterday is : ", yesterday.Format("2006-01-02 03:04:00pm"))
// for easier calculation, use AddDate() function instead
sevenDaysAgo := today.AddDate(0, 0, -7) // minus 7 days
fmt.Println("Seven days ago is : ", sevenDaysAgo.Format("2006-01-02 03:04:00pm"))
oneYearAgo := today.AddDate(-1, 0, 0) // minus one year
fmt.Println("One year ago is : ", oneYearAgo.Format("2006-01-02 03:04:00pm"))
}
Sample output:
Today is : 2016-06-14 01:08:00pm
Yesterday is : 2016-06-13 01:08:00pm
Seven days ago is : 2016-06-07 01:08:00pm
One year ago is : 2015-06-14 01:08:00pm
Hope this helps and happy coding!
References:
https://golang.org/pkg/time/#Time.Add
https://golang.org/pkg/time/#Time.AddDate
https://www.socketloop.com/tutorials/golang-calculate-future-date-with-time-add-function
See also : Golang : Calculate future date with time.Add() function
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+8k Golang : Check from web if Go application is running or not
+13.9k Golang : concatenate(combine) strings
+26k Mac/Linux and Golang : Fix bind: address already in use error
+13k Golang : List objects in AWS S3 bucket
+5.7k Fix yum-complete-transaction error
+5.8k Golang : Denco multiplexer example
+6.5k Golang : Convert an executable file into []byte example
+8.8k Yum Error: no such table: packages
+10k Golang : Get login name from environment and prompt for password
+14.5k Golang : Reset buffer example
+18.6k Golang : Find IP address from string
+14.7k Golang : Adding XML attributes to xml data or use attribute to differentiate a common tag name