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

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

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

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

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

Go聲明了一個(gè)LocalTime的別名,然后綁定了函數(shù)MarshalJSON,用于在序列化時(shí)調(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 類(lèi)型
	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
	//前端接收的時(shí)間字符串
	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語(yǔ)言中g(shù)orm時(shí)間格式化的文章就介紹到這了,更多相關(guān)gorm時(shí)間格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    詳解 Go 語(yǔ)言中 Map 類(lèi)型和 Slice 類(lèi)型的傳遞

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

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

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

    Go 在 MongoDB 中常用查詢(xún)與修改的操作

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

    快速掌握Go語(yǔ)言正/反向代理

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

    golang中的三個(gè)點(diǎn) ''...''的用法示例詳解

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

    GO語(yǔ)言基本類(lèi)型分析

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

    go語(yǔ)言使用scp的方法實(shí)例分析

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

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

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

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

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

最新評(píng)論

阳原县| 高安市| 鄂州市| 明溪县| 兴和县| 湘潭市| 禹城市| 岑溪市| 罗山县| 中阳县| 伊春市| 牙克石市| 丰镇市| 柳州市| 绍兴市| 桐城市| 乐都县| 沈丘县| 乾安县| 广河县| 红桥区| 稻城县| 岳西县| 武清区| 临颍县| 临泽县| 临高县| 府谷县| 新昌县| 三门县| 新郑市| 武陟县| 佛冈县| 古浪县| 清苑县| 邵阳市| 博野县| 中方县| 苗栗县| 六盘水市| 炎陵县|