golang 时间工具类

用不习惯也嫌麻烦每次都去操作时间,然后就自己写了个时间工具类

go 复制代码
package timeutil

import (
	"time"
)

func New() *TimeUtil {
	return &TimeUtil{}
}

// TimeUtil 是时间操作工具类
type TimeUtil struct{}

// GetFormattedDate 获取格式化的日期字符串
func (tu *TimeUtil) GetFormattedDate(t time.Time) string {
	return t.Format("2006-01-02")
}

// GetFormattedTime 获取格式化的时间字符串
func (tu *TimeUtil) GetFormattedTime(t time.Time) string {
	return t.Format("15:04:05")
}

// GetFormattedDateTime 获取格式化的日期时间字符串
func (tu *TimeUtil) GetFormattedDateTime(t time.Time) string {
	return t.Format("2006-01-02 15:04:05")
}

// GetWeekday 获取星期几
func (tu *TimeUtil) GetWeekday(t time.Time) string {
	return t.Weekday().String()
}

// IsLeapYear 判断是否为闰年
func (tu *TimeUtil) IsLeapYear(year int) bool {
	return year%4 == 0 && (year%100 != 0 || year%400 == 0)
}

// ParseDateFromString 将日期字符串解析为时间对象
func (tu *TimeUtil) ParseDateFromString(dateString string) (time.Time, error) {
	layout := "2006-01-02"
	t, err := time.Parse(layout, dateString)
	if err != nil {
		return time.Time{}, err
	}
	return t, nil
}

// ParseTimeFromString 将时间字符串解析为时间对象
func (tu *TimeUtil) ParseTimeFromString(timeString string) (time.Time, error) {
	layout := "15:04:05"
	t, err := time.Parse(layout, timeString)
	if err != nil {
		return time.Time{}, err
	}
	return t, nil
}

// ParseDateTimeFromString 将日期时间字符串解析为时间对象
func (tu *TimeUtil) ParseDateTimeFromString(dateTimeString string) (time.Time, error) {
	layout := "2006-01-02 15:04:05"
	t, err := time.Parse(layout, dateTimeString)
	if err != nil {
		return time.Time{}, err
	}
	return t, nil
}

// FormatTimeString 将时间字符串转换为指定格式的日期时间字符串
/**
inputTime 表示输入的时间字符串 字符格式为:2006-01-02 15:04:05
format 表示要转换的日期时间格式 1、YYYY-MM-DD hh:mm:ss  2、YYYY-MM-DD  3、hh:mm:ss
*/
func (tu *TimeUtil) FormatTimeString(inputTime, format string) (string, error) {
	format = rule(format)
	layout := "2006-01-02 15:04:05"
	t, err := time.Parse(layout, inputTime)
	if err != nil {
		return "", err
	}

	formattedTime := t.Format(format)
	return formattedTime, nil
}

// FormatTimeStringZ 将时间字符串转换为指定格式的日期时间字符串
/**
inputTime 表示输入的时间字符串 字符格式为:2023-07-29T15:30:00Z
format 表示要转换的日期时间格式 1、YYYY-MM-DD hh:mm:ss  2、YYYY-MM-DD  3、hh:mm:ss
*/
func (tu *TimeUtil) FormatTimeStringZ(inputTime, format string) (string, error) {
	format = rule(format)
	t, err := time.Parse(time.RFC3339, inputTime)
	if err != nil {
		return "", err
	}
	formattedTime := t.Format(format)
	return formattedTime, nil
}

// rule 时间规则
func rule(format string) (str string) {
	if format == "1" {
		format = "2006-01-02 15:04:05"
	} else if format == "2" {
		format = "2006-01-02"
	} else if format == "3" {
		format = "15:04:05"
	}
	return format
}
相关推荐
海南java第二人1 分钟前
ClickHouse 自然语言统一查询:让数据对话成为现实
网络·数据库·clickhouse
逻辑羊驼1 分钟前
VSCODE 连接 MySQL 数据库并执行当地SQL文件
数据库·mysql
.千余10 分钟前
【Linux 】网络基础1
linux·运维·服务器·开发语言·网络·学习
小短腿的代码世界11 分钟前
Qt低级网络编程与零拷贝技术在高频交易中的应用:从QTcpSocket到共享内存的全链路优化
开发语言·网络·qt
计算机安禾22 分钟前
【c++面向对象编程】第28篇:new/delete vs malloc/free:C++中正确动态内存管理
开发语言·c++·算法
夜白宋24 分钟前
【Mysql深入】二、事务
数据库·mysql
Languorous.24 分钟前
Linux 登录用户、主机名、提示符详解(新手不迷路)
linux·数据库·postgresql
姚不倒25 分钟前
Go 语言基础入门:从零到实战,一篇文章掌握核心语法
云原生·golang
TechWayfarer27 分钟前
IP归属地API实战指南:用IP数据云解析日志挖掘用户地域分布
大数据·开发语言·网络·python·tcp/ip
ChoSeitaku28 分钟前
10.枚举_Record_密封类_debug_API文档_Object类_lombok_Junit
java·数据库·junit