This question already has an answer here:
- Parsing date string in Go 6 answers
- Difference between two time.Time objects 3 answers
I have one problem: I need to know the difference/duration between two timestamps in golang. Therefore, I use the time library (https://golang.org/pkg/time/).
If I have two timestamps of type "time.time", it is easy to get the difference using "time.Sub()". My problem is that one of my timestamps comes from another function and it is only possible to transfer it as a string:
t1 := "2009-11-10 23:00:00 +0000 UTC m=+0.000000001" //type: string
t2 := time.Now() //type: time.time
Now I have to basic possibilities:
A) Convert t2 to a string as well and try to find out the difference between two strings (UGLY)
B) Convert t1 from type "string" to type "time.time" and then apply "time.Sub()"
I want to go way B). Therefore, I found out that
time.Parse(format, timestring)
should be able to do so. So I tried to convert t1 using
t1_time, err := time.Parse(time.RFC3339, t1)
but the result was not as expected! Instead I got this
0001-01-01 00:00:00 +0000 UTC
and the error saying "error parsing time "2009-11-10 23:00:02 +0000 UTC m=+2.000000001" as "2006-01-02T15:04:05Z07:00": cannot parse " 23:00:02 +0000 UTC m=+2.000000001" as "T" ".
If I use my own timeformat which is the same as t1
timeformat := "2009-11-10 23:00:00 +0000 UTC m=+0.000000001"
t1_time, err := time.Parse(timeformat , t1)
the result stays wrong and I get the error saying"error parsing time "2009-11-10 23:00:02 +0000 UTC m=+2.000000001" as "2009-11-10 23:00:00 +0000 UTC m=+0.000000001": cannot parse "9-11-10 23:00:02 +0000 UTC m=+2.000000001" as "009-" ".
I also tried to go over UNIX time but the time library does not allow me to convert a string into unix.
What do I do wrong??! Why is the parsing not working? Thanks for any help!
</div>