返回顶部
首页 > 资讯 > 后端开发 > GO >go语言中gorm时间格式化
  • 819
分享到

go语言中gorm时间格式化

gorm时间格式化go时间格式化 2023-03-07 14:03:20 819人浏览 八月长安
摘要

GORM自带的time.Time类型JSON默认输出RFC3339Nano格式的,但是如果想改为yyyy-MM-dd HH:mm:ss形式的时间格式,需要定制MarshaljsON了

GORM自带的time.Time类型JSON默认输出RFC3339Nano格式的,但是如果想改为yyyy-MM-dd HH:mm:ss形式的时间格式,需要定制MarshaljsON了。

以下是数据库里存储的数据:

Go声明了一个LocalTime的别名,然后绑定了函数MarshalJSON,用于在序列化时调用。

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 转换成 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, // 禁用表名复数
		}})
	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
}

到此这篇关于go语言中gorm时间格式化的文章就介绍到这了,更多相关gorm时间格式化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: go语言中gorm时间格式化

本文链接: https://lsjlt.com/news/198849.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • go语言中gorm时间格式化
    GORM自带的time.Time类型JSON默认输出RFC3339Nano格式的,但是如果想改为yyyy-MM-dd HH:mm:ss形式的时间格式,需要定制MarshalJSON了...
    99+
    2023-03-07
    gorm时间格式化 go时间格式化
  • go语言中gorm时间格式化方法怎么使用
    今天小编给大家分享一下go语言中gorm时间格式化方法怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。GORM自带的t...
    99+
    2023-07-05
  • GO项目实战之Gorm格式化时间字段实现
    目录goshop开源项目的更新解决方法:补充:gorm时间格式化问题详解总结goshop开源项目的更新 备注:前面项目中用到的代码已经分享到GitHub中去了,并且以后所有项目中会出...
    99+
    2023-01-07
    golang格式化时间 gorm格式化时间字段 gorm使用
  • golang中的时间格式化
    目录golang时间格式化科普 CST 含义GMT 和 UTC 的关系golang 格式化时间 yyyy-MM-dd固定值由来总结golang时间格式化 科普 CST 含义 CST:...
    99+
    2023-02-16
    golang时间格式化 golang格式化 go格式化时间
  • Python格式化时间
      walker经常用到当前时间和相对时间,用来统计程序执行的效率,简单记一下,便于copy。>>> import time #相对时间 >>> startTime = time.time() >...
    99+
    2023-01-31
    时间 Python
  • MySQL 格式化时间
    MySQL如何正确格式化时间 MySQL是一个非常流行的关系型数据库管理系统,它提供了一种使用SQL语言来管理和操作数据库的方法。在MySQL中,时间格式化是一个常见的需求,但很多人可能并不了解如何正确格式化时间。在本文中,我们将介绍MyS...
    99+
    2023-08-16
    mysql 数据库
  • Go语言字符串怎么格式化
    这篇文章主要介绍“Go语言字符串怎么格式化”,在日常操作中,相信很多人在Go语言字符串怎么格式化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言字符串怎么格式化”的疑惑...
    99+
    2024-04-02
  • c语言如何输出时间格式
    C语言中,可以使用ctime函数将时间以字符串格式输出。ctime函数的原型如下:```cchar *ctime(const tim...
    99+
    2023-08-31
    c语言
  • MySQL时间格式化date_format使用语法
    正文 “ 这是mysql系列笔记的第十三篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者个人知识点查阅。” 这一篇笔记介绍如何对 MySQL 中的时间字段进行...
    99+
    2023-05-20
    MySQL 时间格式化 MySQL date_format
  • MySQL中怎么格式化时间
    这篇文章给大家介绍MySQL中怎么格式化时间,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。用法select...
    99+
    2024-04-02
  • postgresql中的时间戳格式化
    目录postgresql时间戳格式化postgresql中时间戳格式转化常识另附表一张总结postgresql时间戳格式化 平时总记不住pg里面怎么将时间戳格式化,记录常用的格式化时...
    99+
    2023-03-21
    postgresq格式化时间戳l 时间戳格式化 postgresql时间戳
  • R语言学习之字符串和时间格式化详解
    目录字符串格式化转义字符时间格式化字符串函数字符串格式化 R语言字符串可用单引号' '或双引号" "来表示,二者唯一的区别是,单引号字符串不含单引...
    99+
    2023-03-21
    R语言字符串 时间格式化 R语言字符串 R语言 时间格式化
  • vue格式化element表格中的时间为指定格式
    在vue表格中如果直接绑定时间字段默认显示格式一般为:yyyy-MM-dd HH:mm:ss,但有时候只需要显示 年月日 或者 时分秒,这时我们就可以用到过滤器(filter) vu...
    99+
    2024-04-02
  • R语言字符串和时间格式化的方法是什么
    这篇“R语言字符串和时间格式化的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“R语言字符串和时间格式化的方法是什么...
    99+
    2023-07-05
  • Go语言fmt.Sprintf格式化输出的语法与实例
    格式化在逻辑中非常常用。使用格式化函数,要注意写法: fmt.Sprintf(格式化样式, 参数列表…) 格式化样式:字符串形式,格式化动词以%开头。参数列表:多个参数...
    99+
    2024-04-02
  • Springboot 中怎么格式化全局时间
    这期内容当中小编将会给大家带来有关Springboot 中怎么格式化全局时间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。时间格式化在项目中使用频率是非常高的,当我们的 ...
    99+
    2024-04-02
  • SpringBoot中如何实现时间格式化
    小编给大家分享一下SpringBoot中如何实现时间格式化,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!时间问题演示为了方便演示,我写了一个简单 Spring Boot 项目,其中数据库中包含了一张 userinfo 表,...
    99+
    2023-06-20
  • java中的实体类时间格式化
    目录实体类时间格式化java 实体类 时间格式化注解实体类时间类型属性常用注解注解一:DateTimeFormt(入参格式化)注解二:JsonFormt(出参格式化)注解三:JSON...
    99+
    2024-04-02
  • JavaScript中时间格式化新思路toLocaleString()
    目录1、时间格式化常规思路2、时间格式化toLocaleString()研究Object对象的时候,看到了 toLocaleString() 这个方法可以很简单的实现时间格式化。 1...
    99+
    2024-04-02
  • vue怎么格式化element表格中的时间为指定格式
    这篇文章主要介绍“vue怎么格式化element表格中的时间为指定格式”,在日常操作中,相信很多人在vue怎么格式化element表格中的时间为指定格式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作