5

在荷兰,我们主要使用 YYYY-MM-DD HH:MM:SS。如何在 Go 中格式化?我插入的所有内容(即使根据标准)都会给出奇怪的数字。

这是我的代码(p.Created是一个NanoSeconds int64对象):

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "log"
    "time"
)

const createdFormat = "2010-01-01 20:01:00" //"Jan 2, 2006 at 3:04pm (MST)"

type Post struct {
    Id      int64
    Created int64
    Title   string
    Body    string
}

func main() {
    // Establish database connection
    dsn := "root@tcp(127.0.0.1:3306)/testdb"
    con, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Println("Couldn't connect to databse:", err)
    } else {
        log.Println("DB Connection established")
    }
    defer con.Close()

    // Try to get something
    row := con.QueryRow("SELECT * FROM posts LIMIT 1")
    p := new(Post)
    err = row.Scan(&p.Id, &p.Created, &p.Title, &p.Body)

    if err != nil {
        log.Println("Failed to fetch Post")
    }
    fmt.Println(p)
    fmt.Println(time.Unix(0, p.Created).Format(createdFormat))
}

我可以只连接time.Unix(0, p.Created).Year()等,但这不是很干净,而且对一致性很不利。

4

2 回答 2

16

上面有两个错误。对于您需要输出该特殊日期/时间的格式,而参数time.Unix是相反的(操场

const createdFormat = "2006-01-02 15:04:05" //"Jan 2, 2006 at 3:04pm (MST)"

fmt.Println(time.Unix(1391878657, 0).Format(createdFormat))
于 2014-02-08T17:01:50.443 回答
0

使用当前时间同样简单

timestamp := time.Now().Format("2006-01-02 15:04:05")

fmt.Println(timestamp)

于 2022-02-22T23:51:50.490 回答