最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語言中g(shù)orm時間格式化

 更新時間:2023年03月07日 14:30:08   作者:小龍在山東  
本文主要介紹了go語言中g(shù)orm時間格式化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

GORM自帶的time.Time類型JSON默認(rèn)輸出RFC3339Nano格式的,但是如果想改為yyyy-MM-dd HH:mm:ss形式的時間格式,需要定制MarshalJSON了。

以下是數(shù)據(jù)庫里存儲的數(shù)據(jù):

Go聲明了一個LocalTime的別名,然后綁定了函數(shù)MarshalJSON,用于在序列化時調(diào)用。

package main

import (
	"database/sql/driver"
	"encoding/json"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
	"strings"
	"time"
)

type Student struct {
	Id       int
	Name     string
	Age      int
	Sex      string
	CreateAt time.Time
}

// TableName 指定表名
func (Student) TableName() string {
	return "student"
}

// LocalTime 別名
type LocalTime time.Time

func (t LocalTime) MarshalJSON() ([]byte, error) {
	tTime := time.Time(t)
	return []byte(fmt.Sprintf("\"%v\"", tTime.Format("2006-01-02 15:04:05"))), nil
}

func (t LocalTime) Value() (driver.Value, error) {
	// LocalTime 轉(zhuǎn)換成 time.Time 類型
	tTime := time.Time(t)
	return tTime.Format("2006-01-02 15:04:05"), nil
}

func (t *LocalTime) UnmarshalJSON(data []byte) error {
	if string(data) == "null" {
		return nil
	}
	var err error
	//前端接收的時間字符串
	str := string(data)
	//去除接收的str收尾多余的"
	timeStr := strings.Trim(str, "\"")
	t1, err := time.Parse("2006-01-02 15:04:05", timeStr)
	*t = LocalTime(t1)
	return err
}

type StudentLocal struct {
	Id       int
	Name     string
	Age      int
	Sex      string
	CreateAt LocalTime
}

// TableName 指定表名
func (StudentLocal) TableName() string {
	return "student"
}

var db *gorm.DB
var err error

func init() {
	//dsn格式 user:pass@tcp(ip:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local
	dsn := "user:pass@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			TablePrefix:   "",   // 表前綴
			SingularTable: true, // 禁用表名復(fù)數(shù)
		}})
	if err != nil {
		panic(err)
	}
}

func main() {
	var student Student
	db.First(&student) // 取第一條到student
	js, _ := json.Marshal(student)
	fmt.Println(string(js))
	// {"Id":1,"Name":"張三","Age":20,"Sex":"男","CreateAt":"2022-12-06T17:49:06+08:00"}

	var studentLocal StudentLocal
	db.First(&studentLocal) // 取第一條到student

	js, _ = json.Marshal(studentLocal)
	fmt.Println(string(js))
	// {"Id":1,"Name":"張三","Age":20,"Sex":"男","CreateAt":"2022-12-06 17:49:06"}

	b, _ := studentLocal.CreateAt.MarshalJSON()
	fmt.Println(string(b))
	// "2022-12-06 17:49:06"

	value, _ := studentLocal.CreateAt.Value()
	fmt.Println(value)
	// 2022-12-06 17:49:06
}

到此這篇關(guān)于go語言中g(shù)orm時間格式化的文章就介紹到這了,更多相關(guān)gorm時間格式化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go高級特性探究之穩(wěn)定排序詳解

    Go高級特性探究之穩(wěn)定排序詳解

    Go 語言提供了 sort 包,其中最常用的一種是 sort.Slice() 函數(shù),本篇文章將為大家介紹如何使用 sort.SliceStable() 對結(jié)構(gòu)體數(shù)組的某個字段進(jìn)行穩(wěn)定排序,感興趣的可以了解一下
    2023-06-06
  • 詳解 Go 語言中 Map 類型和 Slice 類型的傳遞

    詳解 Go 語言中 Map 類型和 Slice 類型的傳遞

    這篇文章主要介紹了詳解 Go 語言中 Map 類型和 Slice 類型的傳遞的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • Go可變參數(shù)函數(shù)的實現(xiàn)

    Go可變參數(shù)函數(shù)的實現(xiàn)

    可變參數(shù)函數(shù)是指函數(shù)參數(shù)的某個參數(shù)可有可無,即這個參數(shù)的個數(shù)可以為0會多個,可變參數(shù)函數(shù)參數(shù)在日常編程中大量使用,本文主要介紹了Go可變參數(shù)函數(shù)的實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • Go 在 MongoDB 中常用查詢與修改的操作

    Go 在 MongoDB 中常用查詢與修改的操作

    這篇文章主要介紹了Go 在 MongoDB 中常用查詢與修改的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 快速掌握Go語言正/反向代理

    快速掌握Go語言正/反向代理

    這篇文章主要介紹了快速掌握Go語言正/反向代理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • golang中的三個點 ''...''的用法示例詳解

    golang中的三個點 ''...''的用法示例詳解

    這篇文章主要介紹了golang中的三個點 '...' 的用法示例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • GO語言基本類型分析

    GO語言基本類型分析

    這篇文章主要介紹了GO語言基本類型,較為詳細(xì)的分析了整形、浮點型、字符串、指針等類型的具體用法,是深入學(xué)習(xí)GO語言所必須掌握的重要基礎(chǔ),需要的朋友可以參考下
    2014-12-12
  • go語言使用scp的方法實例分析

    go語言使用scp的方法實例分析

    這篇文章主要介紹了go語言使用scp的方法,實例分析了go語言調(diào)用scp命令的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Goland 的安裝及激活教程(window、linux下安裝)

    Goland 的安裝及激活教程(window、linux下安裝)

    這篇文章主要介紹了Golang Goland 的安裝及激活詳細(xì)教程,包括window下安裝goland和linux下安裝goland,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • golang判斷文本文件是否是BOM格式的方法詳解

    golang判斷文本文件是否是BOM格式的方法詳解

    在Go語言中,我們可以通過讀取文本文件的前幾個字節(jié)來識別它是否是BOM格式的文件,BOM(Byte Order Mark)是UTF編碼標(biāo)準(zhǔn)中的一部分,用于標(biāo)示文本文件的編碼順序,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10

最新評論

扶余县| 郓城县| 太仆寺旗| 萍乡市| 泰来县| 巧家县| 象州县| 昌邑市| 中西区| 长岭县| 偃师市| 阿巴嘎旗| 英德市| 赤峰市| 巴青县| 巩义市| 榕江县| 晋中市| 金华市| 林州市| 隆德县| 南皮县| 句容市| 府谷县| 岫岩| 友谊县| 三门县| 江达县| 白河县| 高雄县| 合作市| 塔河县| 商都县| 平遥县| 青海省| 山东| 安塞县| 鲁甸县| 陇西县| 牟定县| 延安市|