时间类

package
v0.0.0-...-2910145 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package gtime 提供了用于测量和展示时间的功能。

本包应尽量减少与其他包的依赖关系。

Index

Examples

Constants

View Source
const (
	D  = 24 * time.Hour
	H  = time.Hour
	M  = time.Minute
	S  = time.Second
	MS = time.Millisecond
	US = time.Microsecond
	NS = time.Nanosecond
)

Variables

This section is empty.

Functions

func Date

func Date() string

Date 返回当前日期的字符串,格式如 "2006-01-02"。

Example
fmt.Println(时间类.Date())

// May Output:
// 2006-01-02
Output:

func X取函数执行时长

func X取函数执行时长(执行函数 func()) time.Duration

FuncCost 计算函数 `f` 的执行耗时,单位为纳秒。

func X取当前日期时间

func X取当前日期时间() string

Datetime 返回当前日期时间的字符串,格式如 "2006-01-02 15:04:05"。

func X取当前日期时间ISO8601

func X取当前日期时间ISO8601() string

ISO8601 返回当前日期时间,格式为符合ISO 8601标准的字符串,如 "2006-01-02T15:04:05-07:00"。

func X取当前日期时间RFC822

func X取当前日期时间RFC822() string

RFC822 返回当前日期时间的 RFC822 格式,例如 "Mon, 02 Jan 06 15:04 MST"。

func X取文本时间戳微秒

func X取文本时间戳微秒() string

TimestampMicroStr 是一个便捷方法,用于获取并返回微秒级的时间戳字符串。

func X取文本时间戳毫秒

func X取文本时间戳毫秒() string

TimestampMilliStr 是一个便捷方法,用于获取并返回以字符串形式表示的毫秒级时间戳。

func X取文本时间戳秒

func X取文本时间戳秒() string

TimestampStr 是一个便捷方法,用于获取并返回以字符串形式表示的秒级时间戳。

func X取文本时间戳纳秒

func X取文本时间戳纳秒() string

TimestampNanoStr 是一个便捷方法,用于获取并返回纳秒级时间戳的字符串表示。

func X取时间戳微秒

func X取时间戳微秒() int64

TimestampMicro 获取并返回微秒级的时间戳。

func X取时间戳毫秒

func X取时间戳毫秒() int64

TimestampMilli 获取并返回毫秒级的时间戳。

func X取时间戳秒

func X取时间戳秒() int64

Timestamp 获取并返回以秒为单位的时间戳。

func X取时间戳纳秒

func X取时间戳纳秒() int64

TimestampNano 获取并返回纳秒级别的时间戳。

func X文本取时长

func X文本取时长(文本 string) (纳秒 time.Duration, 错误 error)

ParseDuration parses a duration string. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h", "1d" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h", "d".

Very note that it supports unit "d" more than function time.ParseDuration.

func X设置时区

func X设置时区(时区 string) (错误 error)

SetTimeZone 设置当前整个进程的时区。 参数 `zone` 是一个区域字符串,用于指定相应时区,例如:Asia/Shanghai。

**非常重要,请注意**: 1. 此函数应在导入 "time" 包之前调用。 2. 此函数应仅调用一次。 3. 参考相关问题:https://github.com/golang/go/issues/34814

Types

type Time

type Time struct {
	// contains filtered or unexported fields
}

Time 是对 time.Time 的一个封装,用于提供额外功能。

func StrToTimeFormat别名

func StrToTimeFormat别名(str string, format string) (*Time, error)

StrToTimeFormat将字符串`str`按照给定的格式`format`解析为*time.Time对象。 参数`format`如"Y-m-d H:i:s"。

func X创建

func X创建(参数 ...interface{}) *Time

New 函数根据给定的参数创建并返回一个 Time 对象。 可选参数可以是以下类型:time.Time、*time.Time、字符串或整数。

func X创建并从文本

func X创建并从文本(文本时间 string) *Time

NewFromStr 通过给定的字符串创建并返回一个 Time 对象。 注意,如果发生错误,它将返回 nil。

func X创建并从时间戳

func X创建并从时间戳(时间戳 int64) *Time

NewFromTimeStamp 根据给定的时间戳创建并返回一个 Time 对象, 时间戳可以是秒级到纳秒级精度。 例如:1600443866 和 1600443866199266000 都被认为是有效的时间戳数值。

func X创建并按Layout格式文本

func X创建并按Layout格式文本(文本时间 string, 格式 string) *Time

NewFromStrLayout 根据给定的字符串和标准库布局(如:2006-01-02 15:04:05)创建并返回一个Time对象。 需要注意的是,如果发生错误,它将返回nil。

func X创建并按Time

func X创建并按Time(t time.Time) *Time

NewFromTime 根据给定的 time.Time 对象创建并返回一个 Time 对象。

func X创建并按当前时间

func X创建并按当前时间() *Time

Now 创建并返回一个表示当前时间的时间对象。

func X创建并按给定格式文本

func X创建并按给定格式文本(文本时间 string, 格式 string) *Time

NewFromStrFormat 根据给定的字符串和自定义格式(如:Y-m-d H:i:s)创建并返回一个Time对象。 需要注意,如果发生错误,它将返回nil。

func X解析文本

func X解析文本(文本 string, 格式 ...string) *Time

ParseTimeFromContent 从内容字符串中检索时间信息,然后将其解析并作为 *Time 对象返回。 如果内容中存在多个时间字符串,则返回第一个时间信息。 如果传递了匹配的 `format` 参数,那么它将只检索并解析与第一个匹配格式对应的时间信息。

func X转换文本

func X转换文本(文本时间 string, 格式 ...string) (*Time, error)

StrToTime 将字符串转换为 *Time 类型对象。同时支持时间戳字符串。 参数 `format` 不是必需的,用于指定类似 "Y-m-d H:i:s" 的转换格式。 如果提供了 `format`,它的行为与函数 StrToTimeFormat 相同。 如果未提供 `format`,它将字符串按“标准”日期时间格式进行转换。 注意,如果 `str` 中不包含日期字符串,则转换失败并返回错误。

func X转换文本Layout

func X转换文本Layout(文本时间 string, 格式 string) (*Time, error)

StrToTimeLayout将字符串`str`按照给定的格式`layout`解析为*time.Time对象。 参数`layout`遵循标准库格式,如"2006-01-02 15:04:05"。

func X转换时区

func X转换时区(文本时间 string, 新时区 string, 旧时区 ...string) (*Time, error)

ConvertZone 将字符串 `strTime` 中的时间从 `fromZone` 转换为 `toZone`。 参数 `fromZone` 在默认情况下是不必要的,它表示当前时区。

func (*Time) DeepCopy

func (t *Time) DeepCopy() interface{}

DeepCopy 实现接口,用于当前类型的深度复制。

func (*Time) IsZero

func (t *Time) IsZero() bool

2024-01-22 不能翻译方法名称. IsZero 判断 t 是否代表零时间点,即公元1年1月1日 00:00:00 UTC。

Example

IsZero 判断 t 是否代表零时间点,即公元1年1月1日 00:00:00 UTC。

gt := 时间类.X创建("2018-08-08 08:08:08")

fmt.Println(gt.IsZero())
Output:

false

func (Time) MarshalJSON

func (t Time) MarshalJSON() ([]byte, error)

MarshalJSON 实现了 json.Marshal 接口所需的 MarshalJSON 方法。 注意,切勿使用 `(t *Time) MarshalJSON() ([]byte, error)` 这种形式,因为它会导致 Time 结构体丢失 MarshalJSON 接口的实现。

Example
type Person struct {
	Name     string    `json:"name"`
	Birthday *时间类.Time `json:"birthday"`
}
p := new(Person)
p.Name = "goframe"
p.Birthday = 时间类.X创建("2018-08-08 08:08:08")
j, _ := json.Marshal(p)
fmt.Println(string(j))
Output:

{"name":"goframe","birthday":"2018-08-08 08:08:08"}

func (*Time) NoValidation

func (t *Time) NoValidation()

NoValidation 表示该结构体对象将不会被 gvalid 包进行验证。

func (*Time) Scan

func (t *Time) Scan(value interface{}) error

Scan 实现了由 database/sql 包中 Scan 方法使用的接口,用于将数据库中的值扫描到本地 Go 语言变量中。

func (*Time) String

func (t *Time) String() string

String 将当前时间对象转换为字符串并返回。

Example

String 将当前时间对象转换为字符串并返回。

gt := 时间类.X创建("2018-08-08 08:08:08")
t1 := gt.String()

fmt.Println(t1)
fmt.Println(reflect.TypeOf(t1))
Output:

2018-08-08 08:08:08
string

func (*Time) UnmarshalJSON

func (t *Time) UnmarshalJSON(b []byte) error

UnmarshalJSON 实现了 json.Unmarshal 接口的 UnmarshalJSON 方法。

Example
type Person struct {
	Name     string    `json:"name"`
	Birthday *时间类.Time `json:"birthday"`
}
p := new(Person)
src := `{"name":"goframe","birthday":"2018-08-08 08:08:08"}`
json.Unmarshal([]byte(src), p)

fmt.Println(p)

// 输出
// &{goframe 2018-08-08 08:08:08}
// (这段注释表明该段代码的执行结果会输出一个包含"goframe"和"2018-08-08 08:08:08"信息的数据结构,并以地址引用形式显示。)
Output:

func (*Time) UnmarshalText

func (t *Time) UnmarshalText(data []byte) error

UnmarshalText 实现了 encoding.TextUnmarshaler 接口。 注意,它覆盖了 `time.Time` 同样的实现。

func (*Time) Value

func (t *Time) Value() (driver.Value, error)

Value 是一个接口,为 package database/sql/driver 提供 Value 方法,用于从 Go 语言变量向数据库获取值。

func (*Time) X取Layout格式文本

func (t *Time) X取Layout格式文本(layout格式 string) string

Layout 使用标准库的布局格式化时间,并返回格式化后的结果。

func (*Time) X取UTC时区

func (t *Time) X取UTC时区() *Time

UTC 将当前时间转换为UTC时区。

func (*Time) X取全年第几天

func (t *Time) X取全年第几天() int

DayOfYear 检查并返回一年中指定日期所在的天数位置。

func (*Time) X取全年第几星期

func (t *Time) X取全年第几星期() int

WeeksOfYear 返回当前年份中的周点。

func (*Time) X取副本

func (t *Time) X取副本() *Time

Clone 返回一个新的 Time 对象,它是当前时间对象的克隆副本。

func (*Time) X取副本23点59分59秒

func (t *Time) X取副本23点59分59秒(纳秒精度 ...bool) *Time

EndOfDay 克隆并返回一个新的时间,该时间设置为原时间所在日期的结束时刻,即 23:59:59。

func (*Time) X取副本59分59秒

func (t *Time) X取副本59分59秒(纳秒精度 ...bool) *Time

EndOfHour 克隆并返回一个新的时间,其分钟和秒数都被设置为59。

func (*Time) X取副本59秒

func (t *Time) X取副本59秒(纳秒精度 ...bool) *Time

EndOfMinute复制并返回一个新的时间,其秒数设置为59。

func (*Time) X取副本半年末23点59分59秒

func (t *Time) X取副本半年末23点59分59秒(纳秒精度 ...bool) *Time

EndOfHalf 克隆并返回一个新的时间,这个时间被设定为半年的结束时刻,并且其具体时间为 23:59:59。

func (*Time) X取副本半年第一天

func (t *Time) X取副本半年第一天() *Time

StartOfHalf 创建并返回一个新的时间副本,该时间是当年上半年的第一天,并将其时间设置为00:00:00。

func (*Time) X取副本周末23点59分59秒

func (t *Time) X取副本周末23点59分59秒(纳秒精度 ...bool) *Time

EndOfWeek 创建并返回一个新的时间对象,该对象为所在周的结束时间,并将其时间设置为 23:59:59。

func (*Time) X取副本周第一天

func (t *Time) X取副本周第一天() *Time

StartOfWeek 创建并返回一个新的时间,该时间为所在周的第一天,并将其时间设置为00:00:00。

func (*Time) X取副本季度第一天

func (t *Time) X取副本季度第一天() *Time

StartOfQuarter 创建并返回一个新的时间,该时间为所在季度的第一天,并将其时间设置为 00:00:00。

func (*Time) X取副本季末23点59分59秒

func (t *Time) X取副本季末23点59分59秒(纳秒精度 ...bool) *Time

EndOfQuarter 克隆并返回一个新的时间,该时间为季度末,并将其时间设置为 23:59:59。

func (*Time) X取副本年末23点59分59秒

func (t *Time) X取副本年末23点59分59秒(纳秒精度 ...bool) *Time

EndOfYear 克隆并返回一个新的时间,该时间为当年的年末,并将其时间设置为 23:59:59。

func (*Time) X取副本年第一天

func (t *Time) X取副本年第一天() *Time

StartOfYear 创建并返回一个新的时间,该时间设置为当年的第一天,并且其具体时间设置为00:00:00。

func (*Time) X取副本并按Layout格式

func (t *Time) X取副本并按Layout格式(layout格式 string) *Time

LayoutNew 根据stdlib布局格式化时间,并返回一个新的Time对象。

func (*Time) X取副本忽略分钟秒

func (t *Time) X取副本忽略分钟秒() *Time

StartOfHour 创建并返回一个新的时间,其中小时、分钟和秒被设置为0。

func (*Time) X取副本忽略小时分钟秒

func (t *Time) X取副本忽略小时分钟秒() *Time

StartOfDay 复制并返回一个新的时间,该时间为一天的开始,其时间设置为 00:00:00。

func (*Time) X取副本忽略秒

func (t *Time) X取副本忽略秒() *Time

StartOfMinute 复制并返回一个新的时间,其秒数设置为0。

func (*Time) X取副本月末23点59分59秒

func (t *Time) X取副本月末23点59分59秒(纳秒精度 ...bool) *Time

EndOfMonth 克隆并返回一个新的时间,该时间为所在月份的月末,并将其时间设置为 23:59:59。

func (*Time) X取副本月第一天

func (t *Time) X取副本月第一天() *Time

StartOfMonth 克隆并返回一个新的时间,该时间设置为当月的第一天且其时间为00:00:00 ```go StartOfMonth 创建并返回一个新时间对象的副本,该对象表示所在月份的月初, 即第一天,并将其小时、分钟和秒都设定为00:00:00。

func (*Time) X取当前月份总天数

func (t *Time) X取当前月份总天数() int

DaysInMonth 返回当前月份的天数。

func (*Time) X取微秒

func (t *Time) X取微秒() int

Microsecond 返回由 t 指定的秒内微秒偏移量,范围在 [0, 999999] 之间。

func (*Time) X取文本时间ISO8601

func (t *Time) X取文本时间ISO8601() string

ISO8601将时间格式化为ISO8601标准格式并以字符串形式返回。

func (*Time) X取文本时间RFC822

func (t *Time) X取文本时间RFC822() string

RFC822格式化时间并按照RFC822标准返回其字符串表示形式。

func (*Time) X取文本时间戳微秒

func (t *Time) X取文本时间戳微秒() string

TimestampMicroStr 是一个便捷方法,用于获取并返回微秒级的时间戳字符串。

func (*Time) X取文本时间戳毫秒

func (t *Time) X取文本时间戳毫秒() string

TimestampMilliStr 是一个便捷方法,用于获取并返回以字符串形式表示的毫秒级时间戳。

func (*Time) X取文本时间戳秒

func (t *Time) X取文本时间戳秒() string

TimestampStr 是一个便捷方法,用于获取并返回以字符串形式表示的秒级时间戳。

func (*Time) X取文本时间戳纳秒

func (t *Time) X取文本时间戳纳秒() string

TimestampNanoStr 是一个便捷方法,用于获取并返回纳秒级时间戳的字符串表示。

func (*Time) X取时间戳微秒

func (t *Time) X取时间戳微秒() int64

TimestampMicro 返回以微秒为单位的时间戳。

func (*Time) X取时间戳毫秒

func (t *Time) X取时间戳毫秒() int64

TimestampMilli 返回以毫秒为单位的当前时间戳。

func (*Time) X取时间戳秒

func (t *Time) X取时间戳秒() int64

Timestamp 返回以秒为单位的时间戳。

func (*Time) X取时间戳纳秒

func (t *Time) X取时间戳纳秒() int64

TimestampNano 返回以纳秒为单位的当前时间戳。

func (*Time) X取月份

func (t *Time) X取月份() int

Month 返回由 t 指定的年份中的月份。

func (*Time) X取本地时区

func (t *Time) X取本地时区() *Time

Local将时间转换为本地时区。

func (*Time) X取格式文本

func (t *Time) X取格式文本(格式 string) string

Format 函数使用自定义的 `format` 进行格式化,并返回格式化后的结果。

func (*Time) X取毫秒

func (t *Time) X取毫秒() int

Millisecond 返回由 t 指定的秒内毫秒偏移量,范围在 [0, 999] 之间。

func (*Time) X取秒

func (t *Time) X取秒() int

Second 返回给定时间 t 的分钟内第二个偏移量, 范围在 [0, 59] 内。

func (*Time) X取纳秒

func (t *Time) X取纳秒() int

Nanosecond 返回由t指定的秒内纳秒偏移量, 范围在 [0, 999999999] 之间。

func (*Time) X取纳秒时长

func (t *Time) X取纳秒时长(u *Time) time.Duration

Sub 计算并返回时间段 t-u。如果结果超出了 Duration 类型能够存储的最大(或最小)值, 则会返回最大(或最小)的有效持续时间。 若要计算 t 与一个持续时间 d 的差值(t-d),请使用 t.Add(-d)。

func (*Time) X向上舍入

func (t *Time) X向上舍入(时长 time.Duration) *Time

Round 函数将 t 舍入到最接近 d 的倍数(以零时间点为基准)。 对于刚好位于中间值的舍入行为是向上舍入。 如果 d 小于等于 0,Round 函数将返回剥离了单调时钟读数但其他部分保持不变的 t。

Round 函数针对的是以零时间为基准的绝对持续时间上的时间; 它并不作用在时间的表现形式上。因此,即使调用 Round(Hour), 返回的时间也可能存在非零分钟值,这取决于时间所处的 Location(时区)。

func (*Time) X向下舍入

func (t *Time) X向下舍入(时长 time.Duration) *Time

Truncate 方法将 t 向下舍入至 d 的倍数(以零时间点为基准)。 若 d 小于等于 0,Truncate 方法会返回剥离了单调时钟读数但其他部分保持不变的 t。

Truncate 对时间进行操作时将其视为从零时间点开始的绝对持续时间; 它并不直接作用于时间的展示形式。因此,调用 Truncate(Hour) 可能会返回一个分钟不为零的时间, 具体取决于该时间的位置(Location)。

func (*Time) X增加文本时长

func (t *Time) X增加文本时长(时长 string) (*Time, error)

AddStr 将给定的以字符串形式表示的时间间隔解析,并将其添加到当前时间。

func (*Time) X增加时长

func (t *Time) X增加时长(时长 time.Duration) *Time

Add 将持续时间添加到当前时间。

func (*Time) X增加时间

func (t *Time) X增加时间(年 int, 月 int, 日 int) *Time

AddDate 向时间添加年、月和日。

func (*Time) X按格式取副本

func (t *Time) X按格式取副本(格式 string) *Time

FormatNew 根据给定的自定义`format`格式化并返回一个新的Time对象。

func (*Time) X是否为闰年

func (t *Time) X是否为闰年() bool

IsLeapYear 检查给定的时间是否为闰年。

func (*Time) X是否之前

func (t *Time) X是否之前(u *Time) bool

Before 判断时间点 t 是否在时间点 u 之前。

func (*Time) X是否之后

func (t *Time) X是否之后(u *Time) bool

After 判断时间点 t 是否在时间点 u 之后。

func (*Time) X是否相等

func (t *Time) X是否相等(u *Time) bool

Equal 判断 t 和 u 是否表示相同的时刻。 即使两个时间位于不同的时区,它们也可能相等。 例如,6:00 +0200 CEST(中欧夏令时)和 4:00 UTC 是相等的。 查看 Time 类型的文档,了解使用 == 操作符比较 Time 值时的陷阱; 大多数代码应使用 Equal 方法代替。

func (*Time) X格式设置

func (t *Time) X格式设置(格式 string) *Time

FormatTo 根据给定的自定义 `format` 格式化 `t`。

func (*Time) X设置Layout格式

func (t *Time) X设置Layout格式(layout格式 string) *Time

LayoutTo 根据stdlib布局格式化`t`。

func (*Time) X转换时区

func (t *Time) X转换时区(时区 string) (*Time, error)

ToZone 将当前时间转换为指定时区,如:Asia/Shanghai。

func (*Time) X转换时区Location

func (t *Time) X转换时区Location(时区 *time.Location) *Time

ToLocation将当前时间转换为指定时区的时间。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL