Documentation ¶
Overview ¶
Package gtime 提供了用于测量和展示时间的功能。
本包应尽量减少与其他包的依赖关系。
Index ¶
- Constants
- func Date() string
- func X取函数执行时长(执行函数 func()) time.Duration
- func X取当前日期时间() string
- func X取当前日期时间ISO8601() string
- func X取当前日期时间RFC822() string
- func X取文本时间戳微秒() string
- func X取文本时间戳毫秒() string
- func X取文本时间戳秒() string
- func X取文本时间戳纳秒() string
- func X取时间戳微秒() int64
- func X取时间戳毫秒() int64
- func X取时间戳秒() int64
- func X取时间戳纳秒() int64
- func X文本取时长(文本 string) (纳秒 time.Duration, 错误 error)
- func X设置时区(时区 string) (错误 error)
- type Time
- func StrToTimeFormat别名(str string, format string) (*Time, error)
- func X创建(参数 ...interface{}) *Time
- func X创建并从文本(文本时间 string) *Time
- func X创建并从时间戳(时间戳 int64) *Time
- func X创建并按Layout格式文本(文本时间 string, 格式 string) *Time
- func X创建并按Time(t time.Time) *Time
- func X创建并按当前时间() *Time
- func X创建并按给定格式文本(文本时间 string, 格式 string) *Time
- func X解析文本(文本 string, 格式 ...string) *Time
- func X转换文本(文本时间 string, 格式 ...string) (*Time, error)
- func X转换文本Layout(文本时间 string, 格式 string) (*Time, error)
- func X转换时区(文本时间 string, 新时区 string, 旧时区 ...string) (*Time, error)
- func (t *Time) DeepCopy() interface{}
- func (t *Time) IsZero() bool
- func (t Time) MarshalJSON() ([]byte, error)
- func (t *Time) NoValidation()
- func (t *Time) Scan(value interface{}) error
- func (t *Time) String() string
- func (t *Time) UnmarshalJSON(b []byte) error
- func (t *Time) UnmarshalText(data []byte) error
- func (t *Time) Value() (driver.Value, error)
- func (t *Time) X取Layout格式文本(layout格式 string) string
- func (t *Time) X取UTC时区() *Time
- func (t *Time) X取全年第几天() int
- func (t *Time) X取全年第几星期() int
- func (t *Time) X取副本() *Time
- func (t *Time) X取副本23点59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本半年末23点59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本半年第一天() *Time
- func (t *Time) X取副本周末23点59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本周第一天() *Time
- func (t *Time) X取副本季度第一天() *Time
- func (t *Time) X取副本季末23点59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本年末23点59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本年第一天() *Time
- func (t *Time) X取副本并按Layout格式(layout格式 string) *Time
- func (t *Time) X取副本忽略分钟秒() *Time
- func (t *Time) X取副本忽略小时分钟秒() *Time
- func (t *Time) X取副本忽略秒() *Time
- func (t *Time) X取副本月末23点59分59秒(纳秒精度 ...bool) *Time
- func (t *Time) X取副本月第一天() *Time
- func (t *Time) X取当前月份总天数() int
- func (t *Time) X取微秒() int
- func (t *Time) X取文本时间ISO8601() string
- func (t *Time) X取文本时间RFC822() string
- func (t *Time) X取文本时间戳微秒() string
- func (t *Time) X取文本时间戳毫秒() string
- func (t *Time) X取文本时间戳秒() string
- func (t *Time) X取文本时间戳纳秒() string
- func (t *Time) X取时间戳微秒() int64
- func (t *Time) X取时间戳毫秒() int64
- func (t *Time) X取时间戳秒() int64
- func (t *Time) X取时间戳纳秒() int64
- func (t *Time) X取月份() int
- func (t *Time) X取本地时区() *Time
- func (t *Time) X取格式文本(格式 string) string
- func (t *Time) X取毫秒() int
- func (t *Time) X取秒() int
- func (t *Time) X取纳秒() int
- func (t *Time) X取纳秒时长(u *Time) time.Duration
- func (t *Time) X向上舍入(时长 time.Duration) *Time
- func (t *Time) X向下舍入(时长 time.Duration) *Time
- func (t *Time) X增加文本时长(时长 string) (*Time, error)
- func (t *Time) X增加时长(时长 time.Duration) *Time
- func (t *Time) X增加时间(年 int, 月 int, 日 int) *Time
- func (t *Time) X按格式取副本(格式 string) *Time
- func (t *Time) X是否为闰年() bool
- func (t *Time) X是否之前(u *Time) bool
- func (t *Time) X是否之后(u *Time) bool
- func (t *Time) X是否相等(u *Time) bool
- func (t *Time) X格式设置(格式 string) *Time
- func (t *Time) X设置Layout格式(layout格式 string) *Time
- func (t *Time) X转换时区(时区 string) (*Time, error)
- func (t *Time) X转换时区Location(时区 *time.Location) *Time
Examples ¶
Constants ¶
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取当前日期时间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文本取时长 ¶
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设置时区 ¶
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别名 ¶
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创建并从时间戳 ¶
NewFromTimeStamp 根据给定的时间戳创建并返回一个 Time 对象, 时间戳可以是秒级到纳秒级精度。 例如:1600443866 和 1600443866199266000 都被认为是有效的时间戳数值。
func X创建并按Layout格式文本 ¶
NewFromStrLayout 根据给定的字符串和标准库布局(如:2006-01-02 15:04:05)创建并返回一个Time对象。 需要注意的是,如果发生错误,它将返回nil。
func X创建并按给定格式文本 ¶
NewFromStrFormat 根据给定的字符串和自定义格式(如:Y-m-d H:i:s)创建并返回一个Time对象。 需要注意,如果发生错误,它将返回nil。
func X解析文本 ¶
ParseTimeFromContent 从内容字符串中检索时间信息,然后将其解析并作为 *Time 对象返回。 如果内容中存在多个时间字符串,则返回第一个时间信息。 如果传递了匹配的 `format` 参数,那么它将只检索并解析与第一个匹配格式对应的时间信息。
func X转换文本 ¶
StrToTime 将字符串转换为 *Time 类型对象。同时支持时间戳字符串。 参数 `format` 不是必需的,用于指定类似 "Y-m-d H:i:s" 的转换格式。 如果提供了 `format`,它的行为与函数 StrToTimeFormat 相同。 如果未提供 `format`,它将字符串按“标准”日期时间格式进行转换。 注意,如果 `str` 中不包含日期字符串,则转换失败并返回错误。
func X转换文本Layout ¶
StrToTimeLayout将字符串`str`按照给定的格式`layout`解析为*time.Time对象。 参数`layout`遵循标准库格式,如"2006-01-02 15:04:05"。
func X转换时区 ¶
ConvertZone 将字符串 `strTime` 中的时间从 `fromZone` 转换为 `toZone`。 参数 `fromZone` 在默认情况下是不必要的,它表示当前时区。
func (*Time) IsZero ¶
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 ¶
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) 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 ¶
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 ¶
UnmarshalText 实现了 encoding.TextUnmarshaler 接口。 注意,它覆盖了 `time.Time` 同样的实现。
func (*Time) X取Layout格式文本 ¶
Layout 使用标准库的布局格式化时间,并返回格式化后的结果。
func (*Time) X取副本23点59分59秒 ¶
EndOfDay 克隆并返回一个新的时间,该时间设置为原时间所在日期的结束时刻,即 23:59:59。
func (*Time) X取副本59分59秒 ¶
EndOfHour 克隆并返回一个新的时间,其分钟和秒数都被设置为59。
func (*Time) X取副本半年末23点59分59秒 ¶
EndOfHalf 克隆并返回一个新的时间,这个时间被设定为半年的结束时刻,并且其具体时间为 23:59:59。
func (*Time) X取副本周末23点59分59秒 ¶
EndOfWeek 创建并返回一个新的时间对象,该对象为所在周的结束时间,并将其时间设置为 23:59:59。
func (*Time) X取副本季末23点59分59秒 ¶
EndOfQuarter 克隆并返回一个新的时间,该时间为季度末,并将其时间设置为 23:59:59。
func (*Time) X取副本年末23点59分59秒 ¶
EndOfYear 克隆并返回一个新的时间,该时间为当年的年末,并将其时间设置为 23:59:59。
func (*Time) X取副本并按Layout格式 ¶
LayoutNew 根据stdlib布局格式化时间,并返回一个新的Time对象。
func (*Time) X取副本忽略小时分钟秒 ¶
StartOfDay 复制并返回一个新的时间,该时间为一天的开始,其时间设置为 00:00:00。
func (*Time) X取副本月末23点59分59秒 ¶
EndOfMonth 克隆并返回一个新的时间,该时间为所在月份的月末,并将其时间设置为 23:59:59。
func (*Time) X取副本月第一天 ¶
StartOfMonth 克隆并返回一个新的时间,该时间设置为当月的第一天且其时间为00:00:00 ```go StartOfMonth 创建并返回一个新时间对象的副本,该对象表示所在月份的月初, 即第一天,并将其小时、分钟和秒都设定为00:00:00。
func (*Time) X取文本时间ISO8601 ¶
ISO8601将时间格式化为ISO8601标准格式并以字符串形式返回。
func (*Time) X取纳秒时长 ¶
Sub 计算并返回时间段 t-u。如果结果超出了 Duration 类型能够存储的最大(或最小)值, 则会返回最大(或最小)的有效持续时间。 若要计算 t 与一个持续时间 d 的差值(t-d),请使用 t.Add(-d)。
func (*Time) X向上舍入 ¶
Round 函数将 t 舍入到最接近 d 的倍数(以零时间点为基准)。 对于刚好位于中间值的舍入行为是向上舍入。 如果 d 小于等于 0,Round 函数将返回剥离了单调时钟读数但其他部分保持不变的 t。
Round 函数针对的是以零时间为基准的绝对持续时间上的时间; 它并不作用在时间的表现形式上。因此,即使调用 Round(Hour), 返回的时间也可能存在非零分钟值,这取决于时间所处的 Location(时区)。
func (*Time) X向下舍入 ¶
Truncate 方法将 t 向下舍入至 d 的倍数(以零时间点为基准)。 若 d 小于等于 0,Truncate 方法会返回剥离了单调时钟读数但其他部分保持不变的 t。
Truncate 对时间进行操作时将其视为从零时间点开始的绝对持续时间; 它并不直接作用于时间的展示形式。因此,调用 Truncate(Hour) 可能会返回一个分钟不为零的时间, 具体取决于该时间的位置(Location)。
func (*Time) X是否相等 ¶
Equal 判断 t 和 u 是否表示相同的时刻。 即使两个时间位于不同的时区,它们也可能相等。 例如,6:00 +0200 CEST(中欧夏令时)和 4:00 UTC 是相等的。 查看 Time 类型的文档,了解使用 == 操作符比较 Time 值时的陷阱; 大多数代码应使用 Equal 方法代替。
func (*Time) X设置Layout格式 ¶
LayoutTo 根据stdlib布局格式化`t`。