From dac1c863d73d333cb91107c9f37cc91f0a4ba6a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Sat, 13 Aug 2022 11:10:23 +0800 Subject: [PATCH] - update --- .gitignore | 3 +- vendor/go.dtapp.net/gorandom/.drone.yml | 17 ++++ vendor/go.dtapp.net/gorandom/.gitignore | 9 ++ vendor/go.dtapp.net/gorandom/LICENSE | 21 ++++ vendor/go.dtapp.net/gorandom/README.md | 17 ++++ vendor/go.dtapp.net/gorandom/gorandom.go | 50 +++++++++ vendor/go.dtapp.net/gorandom/version.go | 3 + vendor/go.dtapp.net/gotime/.drone.yml | 17 ++++ vendor/go.dtapp.net/gotime/.gitignore | 7 ++ vendor/go.dtapp.net/gotime/LICENSE | 21 ++++ vendor/go.dtapp.net/gotime/README.md | 17 ++++ vendor/go.dtapp.net/gotime/compare.go | 65 ++++++++++++ vendor/go.dtapp.net/gotime/differ.go | 69 +++++++++++++ vendor/go.dtapp.net/gotime/errors.go | 8 ++ vendor/go.dtapp.net/gotime/gotime.go | 105 +++++++++++++++++++ vendor/go.dtapp.net/gotime/location.go | 14 +++ vendor/go.dtapp.net/gotime/mongo.go | 6 ++ vendor/go.dtapp.net/gotime/start_end.go | 124 +++++++++++++++++++++++ vendor/go.dtapp.net/gotime/today.go | 112 ++++++++++++++++++++ vendor/go.dtapp.net/gotime/tomorrow.go | 15 +++ vendor/go.dtapp.net/gotime/version.go | 3 + vendor/go.dtapp.net/gotime/yesterday.go | 17 ++++ vendor/modules.txt | 6 ++ 23 files changed, 724 insertions(+), 2 deletions(-) create mode 100644 vendor/go.dtapp.net/gorandom/.drone.yml create mode 100644 vendor/go.dtapp.net/gorandom/.gitignore create mode 100644 vendor/go.dtapp.net/gorandom/LICENSE create mode 100644 vendor/go.dtapp.net/gorandom/README.md create mode 100644 vendor/go.dtapp.net/gorandom/gorandom.go create mode 100644 vendor/go.dtapp.net/gorandom/version.go create mode 100644 vendor/go.dtapp.net/gotime/.drone.yml create mode 100644 vendor/go.dtapp.net/gotime/.gitignore create mode 100644 vendor/go.dtapp.net/gotime/LICENSE create mode 100644 vendor/go.dtapp.net/gotime/README.md create mode 100644 vendor/go.dtapp.net/gotime/compare.go create mode 100644 vendor/go.dtapp.net/gotime/differ.go create mode 100644 vendor/go.dtapp.net/gotime/errors.go create mode 100644 vendor/go.dtapp.net/gotime/gotime.go create mode 100644 vendor/go.dtapp.net/gotime/location.go create mode 100644 vendor/go.dtapp.net/gotime/mongo.go create mode 100644 vendor/go.dtapp.net/gotime/start_end.go create mode 100644 vendor/go.dtapp.net/gotime/today.go create mode 100644 vendor/go.dtapp.net/gotime/tomorrow.go create mode 100644 vendor/go.dtapp.net/gotime/version.go create mode 100644 vendor/go.dtapp.net/gotime/yesterday.go create mode 100644 vendor/modules.txt diff --git a/.gitignore b/.gitignore index 114804c..8f33b64 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ .idea .vscode *.log -gomod.sh -/vendor/ +gomod.sh \ No newline at end of file diff --git a/vendor/go.dtapp.net/gorandom/.drone.yml b/vendor/go.dtapp.net/gorandom/.drone.yml new file mode 100644 index 0000000..c56c479 --- /dev/null +++ b/vendor/go.dtapp.net/gorandom/.drone.yml @@ -0,0 +1,17 @@ +kind: pipeline +type: docker +name: clone + +steps: + - name: Test + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -v ./... + - name: Benchmark + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -bench=. -benchmem \ No newline at end of file diff --git a/vendor/go.dtapp.net/gorandom/.gitignore b/vendor/go.dtapp.net/gorandom/.gitignore new file mode 100644 index 0000000..4794692 --- /dev/null +++ b/vendor/go.dtapp.net/gorandom/.gitignore @@ -0,0 +1,9 @@ +.env +.git +.svn +.idea +.vscode +*.log +goinit.sh +gomod.sh +/vendor/ \ No newline at end of file diff --git a/vendor/go.dtapp.net/gorandom/LICENSE b/vendor/go.dtapp.net/gorandom/LICENSE new file mode 100644 index 0000000..ff84bbf --- /dev/null +++ b/vendor/go.dtapp.net/gorandom/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 李光春 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/go.dtapp.net/gorandom/README.md b/vendor/go.dtapp.net/gorandom/README.md new file mode 100644 index 0000000..cdb34f5 --- /dev/null +++ b/vendor/go.dtapp.net/gorandom/README.md @@ -0,0 +1,17 @@ +

+Golang Random +

+ +📦 Golang Random + +[comment]: <> (go) +[![godoc](https://pkg.go.dev/badge/go.dtapp.net/gorandom?status.svg)](https://pkg.go.dev/go.dtapp.net/gorandom) +[![goproxy.cn](https://goproxy.cn/stats/go.dtapp.net/gorandom/badges/download-count.svg)](https://goproxy.cn/stats/go.dtapp.net/gorandom) +[![goreportcard.com](https://goreportcard.com/badge/go.dtapp.net/gorandom)](https://goreportcard.com/report/go.dtapp.net/gorandom) +[![deps.dev](https://img.shields.io/badge/deps-go-red.svg)](https://deps.dev/go/go.dtapp.net%2Fgorandom) + +#### 安装 + +```go +go get -v -u go.dtapp.net/gorandom +``` diff --git a/vendor/go.dtapp.net/gorandom/gorandom.go b/vendor/go.dtapp.net/gorandom/gorandom.go new file mode 100644 index 0000000..34281cc --- /dev/null +++ b/vendor/go.dtapp.net/gorandom/gorandom.go @@ -0,0 +1,50 @@ +package gorandom + +import ( + "math/rand" + "time" +) + +const numbers string = "0123456789" +const letters string = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" +const specials = "~!@#$%^*()_+-=[]{}|;:,./<>?" +const alphanumerics string = letters + numbers +const ascii string = alphanumerics + specials + +func random[T int | int64](n T, chars string) string { + if n <= 0 { + return "" + } + r := rand.New(rand.NewSource(time.Now().UnixNano())) + bytes := make([]byte, n, n) + l := len(chars) + var i T = 0 + for { + if i >= n { + break + } + bytes[i] = chars[r.Intn(l)] + i++ + } + return string(bytes) +} + +// Alphanumeric 随机字母数字 +func Alphanumeric[T int | int64](n T) string { + return random(n, alphanumerics) +} + +// Alphabetic 随机字母 +func Alphabetic[T int | int64](n T) string { + return random(n, letters) +} + +// Numeric 随机数字 +func Numeric[T int | int64](n T) string { + return random(n, numbers) +} + +// Ascii 随机ASCII +func Ascii[T int | int64](n T) string { + return random(n, ascii) +} diff --git a/vendor/go.dtapp.net/gorandom/version.go b/vendor/go.dtapp.net/gorandom/version.go new file mode 100644 index 0000000..2ea50d0 --- /dev/null +++ b/vendor/go.dtapp.net/gorandom/version.go @@ -0,0 +1,3 @@ +package gorandom + +const Version = "1.0.1" diff --git a/vendor/go.dtapp.net/gotime/.drone.yml b/vendor/go.dtapp.net/gotime/.drone.yml new file mode 100644 index 0000000..c56c479 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/.drone.yml @@ -0,0 +1,17 @@ +kind: pipeline +type: docker +name: clone + +steps: + - name: Test + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -v ./... + - name: Benchmark + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -bench=. -benchmem \ No newline at end of file diff --git a/vendor/go.dtapp.net/gotime/.gitignore b/vendor/go.dtapp.net/gotime/.gitignore new file mode 100644 index 0000000..2ee9f26 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/.gitignore @@ -0,0 +1,7 @@ +.env +.git +.svn +.idea +.vscode +.log +gomod.sh \ No newline at end of file diff --git a/vendor/go.dtapp.net/gotime/LICENSE b/vendor/go.dtapp.net/gotime/LICENSE new file mode 100644 index 0000000..ff84bbf --- /dev/null +++ b/vendor/go.dtapp.net/gotime/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 李光春 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/go.dtapp.net/gotime/README.md b/vendor/go.dtapp.net/gotime/README.md new file mode 100644 index 0000000..82111e6 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/README.md @@ -0,0 +1,17 @@ +

+Golang Time +

+ +📦 Golang 时间 + +[comment]: <> (go) +[![godoc](https://pkg.go.dev/badge/go.dtapp.net/gotime?status.svg)](https://pkg.go.dev/go.dtapp.net/gotime) +[![goproxy.cn](https://goproxy.cn/stats/go.dtapp.net/gotime/badges/download-count.svg)](https://goproxy.cn/stats/go.dtapp.net/gotime) +[![goreportcard.com](https://goreportcard.com/badge/go.dtapp.net/gotime)](https://goreportcard.com/report/go.dtapp.net/gotime) +[![deps.dev](https://img.shields.io/badge/deps-go-red.svg)](https://deps.dev/go/go.dtapp.net%2Fgotime) + +#### 安装 + +```go +go get -v -u go.dtapp.net/gotime +``` \ No newline at end of file diff --git a/vendor/go.dtapp.net/gotime/compare.go b/vendor/go.dtapp.net/gotime/compare.go new file mode 100644 index 0000000..bc89964 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/compare.go @@ -0,0 +1,65 @@ +package gotime + +import "time" + +// Gt 是否大于 +func (p Pro) Gt(t2 time.Time) bool { + return p.Time.After(t2) +} + +// Lt 是否小于 +func (p Pro) Lt(t2 time.Time) bool { + return p.Time.Before(t2) +} + +// Eq 是否等于 +func (p Pro) Eq(t2 time.Time) bool { + return p.Time.Equal(t2) +} + +// Ne 是否不等于 +func (p Pro) Ne(t2 time.Time) bool { + return !p.Eq(t2) +} + +// Gte 是否大于等于 +func (p Pro) Gte(t2 time.Time) bool { + return p.Gt(t2) || p.Eq(t2) +} + +// Lte 是否小于等于 +func (p Pro) Lte(t2 time.Time) bool { + return p.Lt(t2) || p.Eq(t2) +} + +// Between 是否在两个时间之间(不包括这两个时间) +func (p Pro) Between(start time.Time, end time.Time) bool { + if p.Gt(start) && p.Lt(end) { + return true + } + return false +} + +// BetweenIncludedStart 是否在两个时间之间(包括开始时间) +func (p Pro) BetweenIncludedStart(start time.Time, end time.Time) bool { + if p.Gte(start) && p.Lt(end) { + return true + } + return false +} + +// BetweenIncludedEnd 是否在两个时间之间(包括结束时间) +func (p Pro) BetweenIncludedEnd(start time.Time, end time.Time) bool { + if p.Gt(start) && p.Lte(end) { + return true + } + return false +} + +// BetweenIncludedBoth 是否在两个时间之间(包括这两个时间) +func (p Pro) BetweenIncludedBoth(start time.Time, end time.Time) bool { + if p.Gte(start) && p.Lte(end) { + return true + } + return false +} diff --git a/vendor/go.dtapp.net/gotime/differ.go b/vendor/go.dtapp.net/gotime/differ.go new file mode 100644 index 0000000..0ad3033 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/differ.go @@ -0,0 +1,69 @@ +package gotime + +import "time" + +// DiffInHour 相差多少小时 +func (p Pro) DiffInHour(t2 time.Time) (hour int64) { + t2.Before(p.Time) + diff := p.Time.Unix() - t2.Unix() + hour = diff / 3600 + return hour +} + +// DiffInHourWithAbs 相差多少小时(绝对值) +func (p Pro) DiffInHourWithAbs(t2 time.Time) (hour int64) { + p.Time.Before(t2) + diff := t2.Unix() - p.Time.Unix() + hour = diff / 3600 + if hour > 0 { + return hour + } + t2.Before(p.Time) + diff = p.Time.Unix() - t2.Unix() + hour = diff / 3600 + return hour +} + +// DiffInMinutes 相差多少分钟 +func (p Pro) DiffInMinutes(t2 time.Time) (hour int64) { + t2.Before(p.Time) + diff := p.Time.Unix() - t2.Unix() + hour = diff / 60 + return hour +} + +// DiffInMinutesWithAbs 相差多少分钟(绝对值) +func (p Pro) DiffInMinutesWithAbs(t2 time.Time) (hour int64) { + p.Time.Before(t2) + diff := t2.Unix() - p.Time.Unix() + hour = diff / 60 + if hour > 0 { + return hour + } + t2.Before(p.Time) + diff = p.Time.Unix() - t2.Unix() + hour = diff / 60 + return hour +} + +// DiffInSecond 相差多少秒 +func (p Pro) DiffInSecond(t2 time.Time) (hour int64) { + t2.Before(p.Time) + diff := p.Time.Unix() - t2.Unix() + hour = diff + return hour +} + +// DiffInSecondWithAbs 相差多少秒(绝对值) +func (p Pro) DiffInSecondWithAbs(t2 time.Time) (hour int64) { + p.Time.Before(t2) + diff := t2.Unix() - p.Time.Unix() + hour = diff + if hour > 0 { + return hour + } + t2.Before(p.Time) + diff = p.Time.Unix() - t2.Unix() + hour = diff + return hour +} diff --git a/vendor/go.dtapp.net/gotime/errors.go b/vendor/go.dtapp.net/gotime/errors.go new file mode 100644 index 0000000..2f69622 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/errors.go @@ -0,0 +1,8 @@ +package gotime + +import "fmt" + +// invalidTimezoneError 无效的时区错误 +var invalidTimezoneError = func(timezone string) error { + return fmt.Errorf("invalid timezone %q, please see the file %q for all valid timezones", timezone, "$GOROOT/lib/time/zoneinfo.zip") +} diff --git a/vendor/go.dtapp.net/gotime/gotime.go b/vendor/go.dtapp.net/gotime/gotime.go new file mode 100644 index 0000000..9123a59 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/gotime.go @@ -0,0 +1,105 @@ +package gotime + +import ( + "fmt" + "time" +) + +// 时间格式化常量 +const ( + RFC3339Format = time.RFC3339 + Iso8601Format = "2006-01-02T15:04:05-07:00" + CookieFormat = "Monday, 02-Jan-2006 15:04:05 MST" + RFC1036Format = "Mon, 02 Jan 06 15:04:05 -0700" + RFC7231Format = "Mon, 02 Jan 2006 15:04:05 GMT" + DayDateTimeFormat = "Mon, Jan 2, 2006 3:04 PM" + DateTimeFormat = "2006-01-02 15:04:05" + DateFormat = "2006-01-02" + TimeFormat = "15:04:05" + ShortDateTimeFormat = "20060102150405" + ShortDateFormat = "20060102" + ShortTimeFormat = "150405" +) + +// Pro 结构体 +type Pro struct { + Time time.Time + loc *time.Location + Error error +} + +// NewPro 初始化结构体 +func NewPro() Pro { + return Pro{ + Time: time.Now(), + } +} + +// BeforeSeconds 获取n秒前的时间 +func (p Pro) BeforeSeconds(seconds int64) Pro { + st, _ := time.ParseDuration(fmt.Sprintf("-%ds", seconds)) + p.Time = p.Time.Add(st) + return p +} + +// AfterSeconds 获取n秒后的时间 +func (p Pro) AfterSeconds(seconds int64) Pro { + st, _ := time.ParseDuration(fmt.Sprintf("+%ds", seconds)) + p.Time = p.Time.Add(st) + return p +} + +// BeforeMinute 获取n分钟前的时间 +func (p Pro) BeforeMinute(seconds int64) Pro { + st, _ := time.ParseDuration(fmt.Sprintf("-%dm", seconds)) + p.Time = p.Time.Add(st) + return p +} + +// AfterMinute 获取n分钟后的时间 +func (p Pro) AfterMinute(seconds int64) Pro { + st, _ := time.ParseDuration(fmt.Sprintf("+%dm", seconds)) + p.Time = p.Time.Add(st) + return p +} + +// BeforeHour 获取n小时前的时间 +func (p Pro) BeforeHour(hour int64) Pro { + st, _ := time.ParseDuration(fmt.Sprintf("-%dh", hour)) + p.Time = p.Time.Add(st) + return p +} + +// AfterHour 获取n小时后的时间 +func (p Pro) AfterHour(hour int64) Pro { + st, _ := time.ParseDuration(fmt.Sprintf("+%dh", hour)) + p.Time = p.Time.Add(st) + return p +} + +// BeforeDay 获取n天前的时间 +func (p Pro) BeforeDay(day int) Pro { + p.Time = p.Time.AddDate(0, 0, -day) + return p +} + +// AfterDay 获取n天后的时间 +func (p Pro) AfterDay(day int) Pro { + p.Time = p.Time.AddDate(0, 0, day) + return p +} + +// SetFormat 格式化 +func (p Pro) SetFormat(layout string) string { + return p.Time.Format(layout) +} + +// Month 获取当前月 +func (p Pro) Month() int64 { + return p.MonthOfYear() +} + +// MonthOfYear 获取本年的第几月 +func (p Pro) MonthOfYear() int64 { + return int64(p.Time.In(p.loc).Month()) +} diff --git a/vendor/go.dtapp.net/gotime/location.go b/vendor/go.dtapp.net/gotime/location.go new file mode 100644 index 0000000..1b664ab --- /dev/null +++ b/vendor/go.dtapp.net/gotime/location.go @@ -0,0 +1,14 @@ +package gotime + +import ( + "time" +) + +// 通过时区获取 Location 实例 +func getLocationByTimezone(timezone string) (*time.Location, error) { + loc, err := time.LoadLocation(timezone) + if err != nil { + err = invalidTimezoneError(timezone) + } + return loc, err +} diff --git a/vendor/go.dtapp.net/gotime/mongo.go b/vendor/go.dtapp.net/gotime/mongo.go new file mode 100644 index 0000000..314fe54 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/mongo.go @@ -0,0 +1,6 @@ +package gotime + +// Bson mongoDB +func (p Pro) Bson() string { + return p.Now().String() +} diff --git a/vendor/go.dtapp.net/gotime/start_end.go b/vendor/go.dtapp.net/gotime/start_end.go new file mode 100644 index 0000000..5afb4f5 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/start_end.go @@ -0,0 +1,124 @@ +package gotime + +import "time" + +// 数字常量 +const ( + YearsPerMillennium = 1000 // 每千年1000年 + YearsPerCentury = 100 // 每世纪100年 + YearsPerDecade = 10 // 每十年10年 + QuartersPerYear = 4 // 每年4季度 + MonthsPerYear = 12 // 每年12月 + MonthsPerQuarter = 3 // 每季度3月 + WeeksPerNormalYear = 52 // 每常规年52周 + weeksPerLongYear = 53 // 每长年53周 + WeeksPerMonth = 4 // 每月4周 + DaysPerLeapYear = 366 // 每闰年366天 + DaysPerNormalYear = 365 // 每常规年365天 + DaysPerWeek = 7 // 每周7天 + HoursPerWeek = 168 // 每周168小时 + HoursPerDay = 24 // 每天24小时 + MinutesPerDay = 1440 // 每天1440分钟 + MinutesPerHour = 60 // 每小时60分钟 + SecondsPerWeek = 604800 // 每周604800秒 + SecondsPerDay = 86400 // 每天86400秒 + SecondsPerHour = 3600 // 每小时3600秒 + SecondsPerMinute = 60 // 每分钟60秒 + MillisecondsPerSecond = 1000 // 每秒1000毫秒 + MicrosecondsPerMillisecond = 1000 // 每毫秒1000微秒 + MicrosecondsPerSecond = 1000000 // 每秒1000000微秒 +) + +// StartOfCentury 本世纪开始时间 +func (p Pro) StartOfCentury() Pro { + p.Time = time.Date(p.Time.Year()/YearsPerCentury*YearsPerCentury, 1, 1, 0, 0, 0, 0, p.Time.Location()) + return p +} + +// EndOfCentury 本世纪结束时间 +func (p Pro) EndOfCentury() Pro { + p.Time = time.Date(p.Time.Year()/YearsPerCentury*YearsPerCentury+99, 12, 31, 23, 59, 59, 999999999, p.Time.Location()) + return p +} + +// StartOfDecade 本年代开始时间 +func (p Pro) StartOfDecade() Pro { + p.Time = time.Date(p.Time.Year()/YearsPerDecade*YearsPerDecade, 1, 1, 0, 0, 0, 0, p.Time.Location()) + return p +} + +// EndOfDecade 本年代结束时间 +func (p Pro) EndOfDecade() Pro { + p.Time = time.Date(p.Time.Year()/YearsPerDecade*YearsPerDecade+9, 12, 31, 23, 59, 59, 999999999, p.Time.Location()) + return p +} + +// StartOfYear 本年开始时间 +func (p Pro) StartOfYear() Pro { + p.Time = time.Date(p.Time.Year(), 1, 1, 0, 0, 0, 0, p.Time.Location()) + return p +} + +// EndOfYear 本年结束时间 +func (p Pro) EndOfYear() Pro { + p.Time = time.Date(p.Time.Year(), 12, 31, 23, 59, 59, 999999999, p.Time.Location()) + return p +} + +// Quarter 获取当前季度 +func (p Pro) Quarter() (quarter int) { + switch { + case p.Time.Month() >= 10: + quarter = 4 + case p.Time.Month() >= 7: + quarter = 3 + case p.Time.Month() >= 4: + quarter = 2 + case p.Time.Month() >= 1: + quarter = 1 + } + return +} + +// StartOfQuarter 本季度开始时间 +func (p Pro) StartOfQuarter() Pro { + p.Time = time.Date(p.Time.Year(), time.Month(3*p.Quarter()-2), 1, 0, 0, 0, 0, p.Time.Location()) + return p +} + +// EndOfQuarter 本季度结束时间 +func (p Pro) EndOfQuarter() Pro { + quarter, day := p.Quarter(), 30 + switch quarter { + case 1, 4: + day = 31 + case 2, 3: + day = 30 + } + p.Time = time.Date(p.Time.Year(), time.Month(3*quarter), day, 23, 59, 59, 999999999, p.Time.Location()) + return p +} + +// StartOfMonth 本月开始时间 +func (p Pro) StartOfMonth() Pro { + p.Time = time.Date(p.Time.Year(), time.Month(p.Month()), 1, 0, 0, 0, 0, p.Time.Location()) + return p +} + +// EndOfMonth 本月结束时间 +func (p Pro) EndOfMonth() Pro { + p.Time = time.Date(p.Time.Year(), time.Month(p.Month()), 1, 23, 59, 59, 999999999, p.Time.Location()) + return p +} + +// StartOfDay 本日开始时间 +func (p Pro) StartOfDay() Pro { + p.Time = time.Date(p.Time.Year(), p.Time.Month(), p.Time.Day(), 0, 0, 0, 0, p.Time.Location()) + return p +} + +// EndOfDay 本日结束时间 +func (p Pro) EndOfDay() Pro { + p.Time = time.Date(p.Time.Year(), p.Time.Month(), p.Time.Day(), 23, 59, 59, 0, p.Time.Location()) + return p +} diff --git a/vendor/go.dtapp.net/gotime/today.go b/vendor/go.dtapp.net/gotime/today.go new file mode 100644 index 0000000..f19f505 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/today.go @@ -0,0 +1,112 @@ +package gotime + +import ( + "log" + "strconv" + "strings" + "time" +) + +// Current 获取当前的时间 +func Current() Pro { + p := NewPro() + p.loc, p.Error = time.LoadLocation("Asia/Shanghai") + if p.Error != nil { + // Docker部署golang应用时时区问题 https://www.ddhigh.com/2018/03/01/golang-docker-timezone.html + log.Printf("【gotime】时区错误:%v\n", p.Error) + p.Time = time.Now().Add(time.Hour * 8) + } else { + p.Time = time.Now().In(p.loc) + } + return p +} + +// SetCurrent 设置当前的时间 +func SetCurrent(sTime time.Time) Pro { + p := NewPro() + p.Time = sTime + return p +} + +// SetCurrentParse 设置当前的时间 +func SetCurrentParse(str string) Pro { + + p := NewPro() + + p.loc, p.Error = time.LoadLocation("Asia/Shanghai") + + layout := DateTimeFormat + if str == "" || str == "0" || str == "0000-00-00 00:00:00" || str == "0000-00-00" || str == "00:00:00" { + return p + } + if len(str) == 10 && strings.Count(str, "-") == 2 { + layout = DateFormat + } + if strings.Index(str, "T") == 10 { + layout = RFC3339Format + } + if _, err := strconv.ParseInt(str, 10, 64); err == nil { + switch len(str) { + case 8: + layout = ShortDateFormat + case 14: + layout = ShortDateTimeFormat + } + } + location, _ := time.ParseInLocation(layout, str, p.loc) + + p.Time = location + return p +} + +// SetCurrentUnix 设置当前的时间 Unix时间戳 +func SetCurrentUnix(ts int64) Pro { + p := NewPro() + p.Time = time.Unix(ts, 0) + return p +} + +// Now 今天此刻 +func (p Pro) Now() time.Time { + return p.Time +} + +// Format 今天此刻格式化 +func (p Pro) Format() string { + return p.Time.Format(DateTimeFormat) +} + +// ToDateFormat 今天此刻日期 +func (p Pro) ToDateFormat() string { + return p.Time.Format(DateFormat) +} + +// ToTimeFormat 今天此刻时间 +func (p Pro) ToTimeFormat() string { + return p.Time.Format(TimeFormat) +} + +// Timestamp 今天此刻时间戳 +func (p Pro) Timestamp() int64 { + return p.Time.Unix() +} + +// TimestampWithSecond 今天此刻时间戳 +func (p Pro) TimestampWithSecond() int64 { + return p.Time.Unix() +} + +// TimestampWithMillisecond 今天毫秒级时间戳 +func (p Pro) TimestampWithMillisecond() int64 { + return p.Time.UnixNano() / int64(time.Millisecond) +} + +// TimestampWithMicrosecond 今天微秒级时间戳 +func (p Pro) TimestampWithMicrosecond() int64 { + return p.Time.UnixNano() / int64(time.Microsecond) +} + +// TimestampWithNanosecond 今天纳秒级时间戳 +func (p Pro) TimestampWithNanosecond() int64 { + return p.Time.UnixNano() +} diff --git a/vendor/go.dtapp.net/gotime/tomorrow.go b/vendor/go.dtapp.net/gotime/tomorrow.go new file mode 100644 index 0000000..e91268f --- /dev/null +++ b/vendor/go.dtapp.net/gotime/tomorrow.go @@ -0,0 +1,15 @@ +package gotime + +import "time" + +// Tomorrow 明天 +func Tomorrow() Pro { + p := NewPro() + location, err := time.LoadLocation("Asia/Shanghai") + if err != nil { + p.Time = time.Now().Add(time.Hour*8).AddDate(0, 0, +1) + } else { + p.Time = time.Now().In(location).AddDate(0, 0, +1) + } + return p +} diff --git a/vendor/go.dtapp.net/gotime/version.go b/vendor/go.dtapp.net/gotime/version.go new file mode 100644 index 0000000..15654f7 --- /dev/null +++ b/vendor/go.dtapp.net/gotime/version.go @@ -0,0 +1,3 @@ +package gotime + +const Version = "1.0.4" diff --git a/vendor/go.dtapp.net/gotime/yesterday.go b/vendor/go.dtapp.net/gotime/yesterday.go new file mode 100644 index 0000000..be1cd6c --- /dev/null +++ b/vendor/go.dtapp.net/gotime/yesterday.go @@ -0,0 +1,17 @@ +package gotime + +import ( + "time" +) + +// Yesterday 昨天 +func Yesterday() Pro { + p := NewPro() + location, err := time.LoadLocation("Asia/Shanghai") + if err != nil { + p.Time = time.Now().Add(time.Hour*8).AddDate(0, 0, -1) + } else { + p.Time = time.Now().In(location).AddDate(0, 0, -1) + } + return p +} diff --git a/vendor/modules.txt b/vendor/modules.txt new file mode 100644 index 0000000..bdb13a7 --- /dev/null +++ b/vendor/modules.txt @@ -0,0 +1,6 @@ +# go.dtapp.net/gorandom v1.0.1 +## explicit; go 1.18 +go.dtapp.net/gorandom +# go.dtapp.net/gotime v1.0.4 +## explicit; go 1.18 +go.dtapp.net/gotime