c语言编程笔录

首页 >   > 笔记大全

笔记大全

golang 日期转换

更新时间:2023-12-24

介绍

在Go程序开发中遇到日期格式的转换问题是很常见的。比如,接收到了一个时间字符串,但是需要将其转换为另一种格式的日期展示,或者需要将日期时间转换为一个Unix时间戳,在此我使用Go语言为例,介绍日期格式转换的几种方法。

1. 格式化日期

格式化日期是在Go语言中转换日期格式最常用的方法。

LUTC是go语言中的一个时区,指代格林威治标准时间,以下是如何将日期时间字符串转换为时间类型并进行格式化的示例:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 定义日期时间字符串
    str := "2022-01-01 00:00:00"

    // 将日期时间字符串转换为时间类型
    t, err := time.Parse("2006-01-02 15:04:05", str)
    if err != nil {
        fmt.Println(err)
    }

    // 将时间进行格式化
    fmt.Println(t.UTC().Format("2006-01-02 15:04:05"))
}

2. 将日期时间转换为Unix时间戳

在Go语言中,我们可以使用time.Unix()函数将时间类型转换为Unix时间戳,该函数接收两个参数:一个int64类型的参数,表示时间戳的整数秒数部分;以及一个int64类型的参数,表示时间戳的小数部分(纳秒)。

以下是将日期时间转换为Unix时间戳的示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 定义日期时间字符串
    str := "2022-01-01 00:00:00"

    // 将日期时间字符串转换为时间类型
    t, err := time.Parse("2006-01-02 15:04:05", str)
    if err != nil {
        fmt.Println(err)
    }

    // 将时间转换为Unix时间戳
    unixTime := t.Unix()

    fmt.Println(unixTime)
}

3. 将Unix时间戳转换为日期时间

在Go语言中,我们可以使用time.Unix()函数将Unix时间戳转换为时间类型,然后进行格式化,即可将Unix时间戳转换为日期时间。

以下是将Unix时间戳转换为日期时间的代码示例:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 定义Unix时间戳
    unixTime := int64(1640995200)

    // 将Unix时间戳转换为时间类型
    t := time.Unix(unixTime, 0)

    // 将时间进行格式化
    fmt.Println(t.UTC().Format("2006-01-02 15:04:05"))
}

4. 使用time包中的函数进行转换

在time包中,除了上面介绍的常用函数,还有一些其他的函数可以帮助我们进行日期格式的转换,比如ParseInLocation函数,它可以将日期字符串解析为时间类型对象,并指定解析时使用的时区。还有将某个时间转换为本地时间等等。

以下是使用time包中的函数进行日期转换的代码示例:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 定义日期时间字符串
    str := "2022-01-01 00:00:00"

    // 将日期时间字符串转换为时间类型
    t, err := time.ParseInLocation("2006-01-02 15:04:05", str, time.UTC)
    if err != nil {
        fmt.Println(err)
    }

    // 将时间转换为本地时间
    localTime := t.Local()

    // 将时间进行格式化
    fmt.Println(localTime.Format("2006-01-02 15:04:05"))
}