How to convert a string to a time in Golang

Overview

A string can be converted to a time in Golang using the Parse function within the time package.

Syntax

time.Parse(format, dateString)

Parameters

The Parse function accepts the following parameters:

  • format: The format in which the time (output) should be. For example DD-MM-YYYY.
  • dateString: The string that needs to be converted to time.

Return value

The Parse function will return a Golang time object.

Example

In the following code, we will convert a string to time using the Parse function:

package main
import (
"fmt"
"time"
)
func main() {
dateString := "2021-11-22"
date, error := time.Parse("2006-01-02", dateString)
if error != nil {
fmt.Println(error)
return
}
fmt.Printf("Type of dateString: %T\n", dateString)
fmt.Printf("Type of date: %T\n", date)
fmt.Println()
fmt.Printf("Value of dateString: %v\n", dateString)
fmt.Printf("Value of date: %v", date)
}

Explanation

  • In lines 3-6, we have imported the necessary packages.

  • Inside the main() function, we have declared a string dateString and initialized it with 2021-11-22 in line #9.

  • In line #10, we then converted the string to date using the time.Parse() function by passing two parameters; the format and the dateString.

  • If there occurs some error while conversion, we output it on the console in line 13.

  • If there are no errors, we output the type and value of dateString and date respectively on the console in line 17-21.

We can use multiple predefined format constants e.g., RFC1123"Mon, 02 Mar 2004 15:04:05 MST", ANSIC"Mon Feb _2 15:04:05 2008", and so on. Let’s try out another example where we utilize the RFC1123 format constant for date and time representation.

package main
import (
"fmt"
"time"
)
func main() {
// using layout RFC1123
parseTime, err := time.Parse(time.RFC1123, "Sun, 12 Dec 2021 12:23:00 UTC")
if err != nil {
panic(err)
}
fmt.Printf("The Parsed time is: %v\n", parseTime)
fmt.Printf("The Formatted Parsed time is: %v", parseTime.Format("02, Jan 2006"))
}
  • Line 10: parses the second argument using the RFC1123 layout and saves the corresponding time object to variable parseTime.

  • Line 15: formats the parsed date and time value using the layout specified by the Format() method and prints the result to the standard output

Free Resources