Compare commits

...

5 Commits

Author SHA1 Message Date
dtapps 1b8a3a8b18 - 增加 `FormatFilter`
4 days ago
dtapps e25da0cbd4 - 增加 `ZhFormat`
2 months ago
dtapps aae4112b32 - 增加 `ToDateFormatTime` 方法
3 months ago
dtapps ca62634337 - 增加 `SetCurrentMillisecondUnix` 方法
5 months ago
李光春 d269b45582 - 增加[验证字符串是否为时间]方法
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
2 years ago

2
.gitignore vendored

@ -4,4 +4,4 @@
.idea
.vscode
.log
gomod.sh
go_mod.sh

@ -1,5 +1,5 @@
<h1>
<a href="https://www.dtapp.net/">Golang Time</a>
<a href="https://www.dtapp.net/">Golang</a>
</h1>
📦 Golang 时间
@ -12,6 +12,22 @@
#### 安装
```shell
go get -v -u go.dtapp.net/gotime@v1.0.9
```
#### 使用
```go
go get -v -u go.dtapp.net/gotime
package main
import (
"go.dtapp.net/gotime"
"testing"
)
// TestVerification 验证字符串是否为时间
func TestVerification(t *testing.T) {
t.Log(gotime.Verification("2022-02-05 00:00:00", gotime.DateTimeFormat))
}
```

@ -0,0 +1,16 @@
package gotime
const (
DateTimeFormat = "2006-01-02 15:04:05"
DateTimeShrinkFormat = "2006-01-02 15:04"
DateFormat = "2006-01-02"
TimeFormat = "15:04:05"
)
const (
DateTimeZhFormat = "2006年01月02日 15点04分05秒"
DateTimeZhShrinkFormat = "2006年01月02日 15点04分"
DateZhFormat = "2006年01月02日"
TimeZhFormat = "15点04分05秒"
TimeZhShrinkFormat = "15点04分"
)

@ -0,0 +1,11 @@
package gotime
import "testing"
func TestZhFormat(t *testing.T) {
t.Log("DateTimeZhFormat", Current().SetFormat(DateTimeZhFormat))
t.Log("DateTimeZhShrinkFormat", Current().SetFormat(DateTimeZhShrinkFormat))
t.Log("DateZhFormat", Current().SetFormat(DateZhFormat))
t.Log("TimeZhFormat", Current().SetFormat(TimeZhFormat))
t.Log("TimeZhShrinkFormat", Current().SetFormat(TimeZhShrinkFormat))
}

@ -1,3 +1,3 @@
module go.dtapp.net/gotime
go 1.18
go 1.22

@ -13,9 +13,6 @@ const (
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"
@ -23,9 +20,8 @@ const (
// Pro 结构体
type Pro struct {
Time time.Time
loc *time.Location
Error error
Time time.Time
loc *time.Location
}
// NewPro 初始化结构体

@ -5,36 +5,39 @@ import (
)
func TestTime(t *testing.T) {
t.Log("今天此刻:", Current().Now())
t.Log("测试", Current().SetFormat("20060102150405"))
t.Log("今天此刻格式化:", Current().Format())
t.Log("今天此刻日期:", Current().ToDateFormat())
t.Log("今天此刻时间:", Current().ToTimeFormat())
t.Log("今天此刻时间戳:", Current().Timestamp())
t.Log("今天此刻时间戳:", Current().TimestampWithSecond())
t.Log("今天毫秒级时间戳:", Current().TimestampWithMillisecond())
t.Log("今天微秒级时间戳:", Current().TimestampWithMicrosecond())
t.Log("今天纳秒级时间戳:", Current().TimestampWithNanosecond())
t.Log("昨天此刻:", Yesterday().Now())
t.Log("昨天此刻格式化:", Yesterday().Format())
t.Log("昨天此刻日期:", Yesterday().ToDateFormat())
t.Log("昨天此刻时间:", Yesterday().ToTimeFormat())
t.Log("昨天此刻时间戳:", Yesterday().Timestamp())
t.Log("昨天此刻时间戳:", Yesterday().TimestampWithSecond())
t.Log("昨天毫秒级时间戳:", Yesterday().TimestampWithMillisecond())
t.Log("昨天微秒级时间戳:", Yesterday().TimestampWithMicrosecond())
t.Log("昨天纳秒级时间戳:", Yesterday().TimestampWithNanosecond())
t.Log("明天此刻:", Tomorrow().Now())
t.Log("明天此刻格式化:", Tomorrow().Format())
t.Log("明天此刻日期:", Tomorrow().ToDateFormat())
t.Log("明天此刻时间:", Tomorrow().ToTimeFormat())
t.Log("明天此刻时间戳:", Tomorrow().Timestamp())
t.Log("明天此刻时间戳:", Tomorrow().TimestampWithSecond())
t.Log("明天毫秒级时间戳:", Tomorrow().TimestampWithMillisecond())
t.Log("明天微秒级时间戳:", Tomorrow().TimestampWithMicrosecond())
t.Log("明天纳秒级时间戳:", Tomorrow().TimestampWithNanosecond())
t.Log("今天此刻 Now", Current().Now())
t.Log("测试 SetFormat", Current().SetFormat("20060102150405"))
t.Log("今天此刻格式化 Format", Current().Format())
t.Log("今天此刻日期 ToDateFormat", Current().ToDateFormat())
t.Log("今天此刻日期 ToDateFormatTime", Current().ToDateFormatTime())
t.Log("今天此刻时间 ToTimeFormat", Current().ToTimeFormat())
t.Log("今天此刻时间戳 Timestamp", Current().Timestamp())
t.Log("今天此刻时间戳 TimestampWithSecond", Current().TimestampWithSecond())
t.Log("今天毫秒级时间戳 TimestampWithMillisecond", Current().TimestampWithMillisecond())
t.Log("今天微秒级时间戳 TimestampWithMicrosecond", Current().TimestampWithMicrosecond())
t.Log("今天纳秒级时间戳 TimestampWithNanosecond", Current().TimestampWithNanosecond())
t.Log("昨天此刻 Now", Yesterday().Now())
t.Log("昨天此刻格式化 Format", Yesterday().Format())
t.Log("昨天此刻日期 ToDateFormat", Yesterday().ToDateFormat())
t.Log("昨天此刻日期 ToDateFormatTime", Yesterday().ToDateFormatTime())
t.Log("昨天此刻时间 ToTimeFormat", Yesterday().ToTimeFormat())
t.Log("昨天此刻时间戳 Timestamp", Yesterday().Timestamp())
t.Log("昨天此刻时间戳 TimestampWithSecond", Yesterday().TimestampWithSecond())
t.Log("昨天毫秒级时间戳 TimestampWithMillisecond", Yesterday().TimestampWithMillisecond())
t.Log("昨天微秒级时间戳 TimestampWithMicrosecond", Yesterday().TimestampWithMicrosecond())
t.Log("昨天纳秒级时间戳 TimestampWithNanosecond", Yesterday().TimestampWithNanosecond())
t.Log("明天此刻 Now", Tomorrow().Now())
t.Log("明天此刻格式化 Format", Tomorrow().Format())
t.Log("明天此刻日期 ToDateFormat", Tomorrow().ToDateFormat())
t.Log("明天此刻日期 ToDateFormatTime", Tomorrow().ToDateFormatTime())
t.Log("明天此刻时间 ToTimeFormat", Tomorrow().ToTimeFormat())
t.Log("明天此刻时间戳 Timestamp", Tomorrow().Timestamp())
t.Log("明天此刻时间戳 TimestampWithSecond", Tomorrow().TimestampWithSecond())
t.Log("明天毫秒级时间戳 TimestampWithMillisecond", Tomorrow().TimestampWithMillisecond())
t.Log("明天微秒级时间戳 TimestampWithMicrosecond", Tomorrow().TimestampWithMicrosecond())
t.Log("明天纳秒级时间戳 TimestampWithNanosecond", Tomorrow().TimestampWithNanosecond())
t.Log("本世纪开始时间:", Current().StartOfCentury().Format())
t.Log("本世纪结束时间:", Current().EndOfCentury().Format())
@ -91,12 +94,17 @@ func Test2(t *testing.T) {
}
func TestGt(t *testing.T) {
t.Log(SetCurrentParse("2022-04-06 15:05:24").Time)
t.Log(SetCurrentParse("2022-07-29 15:05:24").Time)
t.Log(Current().Lte(SetCurrentParse("2022-07-18 17:05:24").Time))
}
func TestCompare(t *testing.T) {
t.Log("是否大于", Current().Gt(SetCurrentParse("2022-07-29 14:35:24").Time))
t.Log("是否小于", Current().Lt(SetCurrentParse("2022-07-29 14:35:24").Time))
}
func TestTaoBao(t *testing.T) {
i := 1
var i int64 = 1
for {
if i > 3 {
break
@ -112,7 +120,7 @@ func TestTaoBao(t *testing.T) {
func TestMT(t *testing.T) {
day := 1
var day int64 = 1
t.Log(day)
t.Log(Current().BeforeHour(24 * day).Format())
t.Log(Current().BeforeHour(24 * (day - 1)).Format())

@ -9,15 +9,18 @@ import (
// Current 获取当前的时间
func Current() Pro {
var err error
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.loc, err = time.LoadLocation("Asia/Shanghai")
if err != nil {
log.Printf("【gotime】时区错误%v\n", err)
p.Time = time.Now().Add(time.Hour * 8)
} else {
p.Time = time.Now().In(p.loc)
}
return p
}
@ -31,9 +34,14 @@ func SetCurrent(sTime time.Time) Pro {
// SetCurrentParse 设置当前的时间
func SetCurrentParse(str string) Pro {
var err error
p := NewPro()
p.loc, p.Error = time.LoadLocation("Asia/Shanghai")
p.loc, err = time.LoadLocation("Asia/Shanghai")
if err != nil {
log.Printf("【gotime】时区错误%v\n", err)
p.Time = time.Now().Add(time.Hour * 8)
}
layout := DateTimeFormat
if str == "" || str == "0" || str == "0000-00-00 00:00:00" || str == "0000-00-00" || str == "00:00:00" {
@ -66,6 +74,13 @@ func SetCurrentUnix(ts int64) Pro {
return p
}
// SetCurrentMillisecondUnix 设置当前的时间 毫秒Unix时间戳
func SetCurrentMillisecondUnix(ts int64) Pro {
p := NewPro()
p.Time = time.Unix(ts/1000, 0)
return p
}
// Now 今天此刻
func (p Pro) Now() time.Time {
return p.Time
@ -76,11 +91,25 @@ func (p Pro) Format() string {
return p.Time.Format(DateTimeFormat)
}
// FormatFilter 今天此刻格式化 带 过滤无效时间
func (p Pro) FormatFilter() string {
if p.Time.Format(DateTimeFormat) == "0001-01-01 00:00:00" || p.Time.Format(DateTimeFormat) == "0001-01-01 08:05:43" {
return ""
} else {
return p.Time.Format(DateTimeFormat)
}
}
// ToDateFormat 今天此刻日期
func (p Pro) ToDateFormat() string {
return p.Time.Format(DateFormat)
}
// ToDateFormatTime 今天此刻日期
func (p Pro) ToDateFormatTime() time.Time {
return SetCurrentParse(p.Time.Format(DateFormat)).Time
}
// ToTimeFormat 今天此刻时间
func (p Pro) ToTimeFormat() string {
return p.Time.Format(TimeFormat)

@ -0,0 +1,16 @@
package gotime
import "time"
// Verification 验证字符串是否为时间
func Verification(str, layout string) (resp time.Time, err error) {
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
return time.Time{}, err
}
location, err := time.ParseInLocation(layout, str, loc)
if err != nil {
return time.Time{}, err
}
return location, nil
}

@ -0,0 +1,7 @@
package gotime
import "testing"
func TestVerification(t *testing.T) {
t.Log(Verification("2022-02-05 00:00:00", DateTimeFormat))
}

@ -1,3 +1,3 @@
package gotime
const Version = "1.0.4"
const Version = "1.0.9"

@ -0,0 +1,13 @@
package gotime
import "testing"
func TestVersion(t *testing.T) {
t.Log(Version)
}
func BenchmarkVersion(b *testing.B) {
for i := 0; i < b.N; i++ {
b.Log(Version)
}
}
Loading…
Cancel
Save