timex

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2023 License: Apache-2.0 Imports: 3 Imported by: 0

README

Timex

Provides an enhanced time.Time implementation, and add more commonly used functional methods.

Install

go get github.com/zhangyiming748/pretty/timex

Usage

Create timex instance
now := timex.Now()

// from time.Time
tx := timex.New(time.Now())
tx := timex.FromTime(time.Now())

// from time unix
tx := timex.FromUnix(1647411580)

Create from datetime string:

// auto match layout by datetime
tx, err  := timex.FromString("2022-04-20 19:40:34")
// custom set the datetime layout
tx, err  := timex.FromString("2022-04-20 19:40:34", "2006-01-02 15:04:05")
// use date template as layout
tx, err  := timex.FromDate("2022-04-20 19:40:34", "Y-m-d H:I:S")
Use timex instance
tx := timex.Now()

Change time:

tx.Yesterday()
tx.Tomorrow()

tx.DayStart() // get time at Y-m-d 00:00:00
tx.DayEnd() // get time at Y-m-d 23:59:59
tx.HourStart() // get time at Y-m-d H:00:00
tx.HourEnd() // get time at Y-m-d H:59:59

tx.AddDay(2)
tx.AddHour(1)
tx.AddMinutes(15)
tx.AddSeconds(120)

Compare time:

// before compare
tx.IsBefore(u time.Time)
tx.IsBeforeUnix(1647411580)
// after compare
tx.IsAfter(u time.Time)
tx.IsAfterUnix(1647411580)
Helper functions
ts := timex.NowUnix() // current unix timestamp

t := NowAddDay(1) // from now add 1 day
t := NowAddHour(1) // from now add 1 hour
t := NowAddMinutes(3) // from now add 3 minutes
t := NowAddSeconds(180) // from now add 180 seconds
Convert time to date by template

Template Chars:

 Y,y - year
  Y - year 2006
  y - year 06
 m - month 01-12
 d - day 01-31
 H,h - hour
  H - hour 00-23
  h - hour 01-12
 I,i - minute
  I - minute 00-59
  i - minute 0-59
 S,s - second
  S - second 00-59
  s - second 0-59
... ...

More, please see charMap

Examples, use timex format date:

tx := timex.Now()
date := tx.DateFormat("Y-m-d H:I:S") // Output: 2022-04-20 19:09:03
date = tx.DateFormat("y-m-d h:i:s") // Output: 22-04-20 07:9:3

Format time.Time:

tx := time.Now()
date := timex.DateFormat(tx, "Y-m-d H:I:S") // Output: 2022-04-20 19:40:34

More usage:

ts := timex.NowUnix() // current unix timestamp

date := FormatUnix(ts, "2006-01-02 15:04:05") // Get: 2022-04-20 19:40:34
date := FormatUnixByTpl(ts, "Y-m-d H:I:S") // Get: 2022-04-20 19:40:34

Functions

func AddDay(t time.Time, day int) time.Time
func AddHour(t time.Time, hour int) time.Time
func AddMinutes(t time.Time, minutes int) time.Time
func AddSeconds(t time.Time, seconds int) time.Time
func Date(t time.Time, template string) string
func DateFormat(t time.Time, template string) string
func DayEnd(t time.Time) time.Time
func DayStart(t time.Time) time.Time
func Format(t time.Time) string
func FormatBy(t time.Time, layout string) string
func FormatByTpl(t time.Time, template string) string
func FormatUnix(sec int64) string
func FormatUnixBy(sec int64, layout string) string
func FormatUnixByTpl(sec int64, template string) string
func HourEnd(t time.Time) time.Time
func HourStart(t time.Time) time.Time
func HowLongAgo(sec int64) string
func NowAddDay(day int) time.Time
func NowAddHour(hour int) time.Time
func NowAddMinutes(minutes int) time.Time
func NowAddSeconds(seconds int) time.Time
func NowHourEnd() time.Time
func NowHourStart() time.Time
func NowUnix() int64
func SetLocalByName(tzName string) error
func ToDuration(s string) (time.Duration, error)
func ToLayout(template string) string
func TodayEnd() time.Time
func TodayStart() time.Time

// for create timex.Time
    func FromDate(s string, template ...string) (*Time, error)
    func FromString(s string, layouts ...string) (*Time, error)
    func FromTime(t time.Time) *Time
    func FromUnix(sec int64) *Time
    func Local() *Time
    func LocalByName(tzName string) *Time
    func New(t time.Time) *Time
    func Now() *Time
    func Wrap(t time.Time) *Time
Methods in timex.Time
func (t *Time) AddDay(day int) *Time
func (t *Time) AddHour(hours int) *Time
func (t *Time) AddMinutes(minutes int) *Time
func (t *Time) AddSeconds(seconds int) *Time
func (t *Time) CustomHMS(hour, min, sec int) *Time
func (t *Time) DateFormat(template string) string
func (t *Time) Datetime() string
func (t *Time) DayAfter(day int) *Time
func (t *Time) DayAgo(day int) *Time
func (t *Time) DayEnd() *Time
func (t *Time) DayStart() *Time
func (t Time) Diff(u time.Time) time.Duration
func (t Time) DiffSec(u time.Time) int
func (t *Time) Format(layout string) string
func (t *Time) HourEnd() *Time
func (t *Time) HourStart() *Time
func (t Time) HowLongAgo(before time.Time) string
func (t *Time) IsAfter(u time.Time) bool
func (t *Time) IsAfterUnix(ux int64) bool
func (t *Time) IsBefore(u time.Time) bool
func (t *Time) IsBeforeUnix(ux int64) bool
func (t *Time) SubDay(day int) *Time
func (t *Time) SubHour(hours int) *Time
func (t *Time) SubMinutes(minutes int) *Time
func (t *Time) SubSeconds(seconds int) *Time
func (t Time) SubUnix(u time.Time) int
func (t Time) T() time.Time
func (t Time) Timestamp() int64
func (t *Time) Tomorrow() *Time
func (t *Time) TplFormat(template string) string
func (t *Time) UnmarshalJSON(data []byte) error
func (t *Time) UnmarshalText(data []byte) error
func (t *Time) Yesterday() *Time

Code Check & Testing

gofmt -w -l ./
golint ./...

Testing:

go test -v ./timex/...

Test limit by regexp:

go test -v -run ^TestSetByKeys ./timex/...

Documentation

Overview

Package timex provides an enhanced time.Time implementation. Add more commonly used functional methods.

such as: DayStart(), DayAfter(), DayAgo(), DateFormat() and more.

Index

Constants

View Source
const (
	OneSecond  = 1
	OneMinSec  = 60
	OneHourSec = 3600
	OneDaySec  = 86400
	OneWeekSec = 7 * 86400

	Second  = time.Second
	OneMin  = time.Minute
	OneHour = time.Hour
	OneDay  = 24 * time.Hour
	OneWeek = 7 * 24 * time.Hour

	DatetimeLayout = "2006-01-02 15:04:05"
	DateOnlyLayout = "2006-01-02"
	TimeOnlyLayout = "15:04:05"
)

provide some commonly time consts

Variables

View Source
var (
	// DefaultLayout template for format time
	DefaultLayout = "2006-01-02 15:04:05"
)

Functions

func AddDay

func AddDay(t time.Time, day int) time.Time

AddDay add some day time for given time

func AddHour

func AddHour(t time.Time, hour int) time.Time

AddHour add some hour time for given time

func AddMinutes

func AddMinutes(t time.Time, minutes int) time.Time

AddMinutes add some minutes time for given time

func AddSeconds

func AddSeconds(t time.Time, seconds int) time.Time

AddSeconds add some seconds time for given time

func Date

func Date(t time.Time, template string) string

Date format time by given date template. see ToLayout()

func DateFormat

func DateFormat(t time.Time, template string) string

DateFormat format time by given date template. see ToLayout()

func DayEnd

func DayEnd(t time.Time) time.Time

DayEnd time for given time

func DayStart

func DayStart(t time.Time) time.Time

DayStart time for given time

func Format

func Format(t time.Time) string

Format use default layout

func FormatBy

func FormatBy(t time.Time, layout string) string

FormatBy given default layout

func FormatByTpl

func FormatByTpl(t time.Time, template string) string

FormatByTpl format time by given date template. see ToLayout()

func FormatUnix

func FormatUnix(sec int64) string

FormatUnix time seconds use default layout

func FormatUnixBy

func FormatUnixBy(sec int64, layout string) string

FormatUnixBy format time seconds use given layout

func FormatUnixByTpl

func FormatUnixByTpl(sec int64, template string) string

FormatUnixByTpl format time seconds use given date template. see ToLayout()

func HourEnd

func HourEnd(t time.Time) time.Time

HourEnd time for given time

func HourStart

func HourStart(t time.Time) time.Time

HourStart time for given time

func HowLongAgo

func HowLongAgo(sec int64) string

HowLongAgo format given timestamp to string.

func NowAddDay

func NowAddDay(day int) time.Time

NowAddDay add some day time from now

func NowAddHour

func NowAddHour(hour int) time.Time

NowAddHour add some hour time from now

func NowAddMinutes

func NowAddMinutes(minutes int) time.Time

NowAddMinutes add some minutes time from now

func NowAddSeconds

func NowAddSeconds(seconds int) time.Time

NowAddSeconds add some seconds time from now

func NowHourEnd

func NowHourEnd() time.Time

NowHourEnd time

func NowHourStart

func NowHourStart() time.Time

NowHourStart time

func NowUnix

func NowUnix() int64

NowUnix is short of time.Now().Unix()

func SetLocalByName

func SetLocalByName(tzName string) error

SetLocalByName set local by tz name. eg: UTC, PRC

func ToDuration

func ToDuration(s string) (time.Duration, error)

ToDuration parses a duration string. such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".

func ToLayout

func ToLayout(template string) string

ToLayout convert chars date template to Go date layout.

Chars see charMap

func TodayEnd

func TodayEnd() time.Time

TodayEnd time

func TodayStart

func TodayStart() time.Time

TodayStart time

Types

type Time

type Time struct {
	time.Time
	// Layout set the default date format layout. default use DefaultLayout
	Layout string
}

Time an enhanced time.Time implementation.

func FromDate

func FromDate(s string, template ...string) (*Time, error)

FromDate create from datetime string.

func FromString

func FromString(s string, layouts ...string) (*Time, error)

FromString create from datetime string. see strutil.ToTime()

func FromTime

func FromTime(t time.Time) *Time

FromTime new instance form given time.Time. alias of the New()

func FromUnix

func FromUnix(sec int64) *Time

FromUnix create from unix time

func Local

func Local() *Time

Local time for now

func LocalByName

func LocalByName(tzName string) *Time

LocalByName time for now

func New

func New(t time.Time) *Time

New instance form given time

func Now

func Now() *Time

Now time instance

func Wrap

func Wrap(t time.Time) *Time

Wrap the go time instance. alias of the New()

func (*Time) AddDay

func (t *Time) AddDay(day int) *Time

AddDay add some day time for the time

func (*Time) AddHour

func (t *Time) AddHour(hours int) *Time

AddHour add some hour time

func (*Time) AddMinutes

func (t *Time) AddMinutes(minutes int) *Time

AddMinutes add some minutes time for the time

func (*Time) AddSeconds

func (t *Time) AddSeconds(seconds int) *Time

AddSeconds add some seconds time the time

func (*Time) CustomHMS

func (t *Time) CustomHMS(hour, min, sec int) *Time

CustomHMS custom change the hour, minute, second for create new time.

func (*Time) DateFormat

func (t *Time) DateFormat(template string) string

DateFormat use input template format time to date. see ToLayout()

func (*Time) Datetime

func (t *Time) Datetime() string

Datetime use DefaultLayout format time to date. see Format()

func (*Time) DayAfter

func (t *Time) DayAfter(day int) *Time

DayAfter get some day after time for the time. alias of Time.AddDay()

func (*Time) DayAgo

func (t *Time) DayAgo(day int) *Time

DayAgo get some day ago time for the time

func (*Time) DayEnd

func (t *Time) DayEnd() *Time

DayEnd get time at 23:59:59

func (*Time) DayStart

func (t *Time) DayStart() *Time

DayStart get time at 00:00:00

func (Time) Diff

func (t Time) Diff(u time.Time) time.Duration

Diff calc diff duration for t - u. alias of time.Time.Sub()

func (Time) DiffSec

func (t Time) DiffSec(u time.Time) int

DiffSec calc diff seconds for t - u

func (Time) DiffUnix

func (t Time) DiffUnix(u int64) int

DiffUnix calc diff seconds for t.Unix() - u

func (*Time) Format

func (t *Time) Format(layout string) string

Format returns a textual representation of the time value formatted according to the layout defined by the argument.

see time.Time.Format()

func (*Time) HourEnd

func (t *Time) HourEnd() *Time

HourEnd time

func (*Time) HourStart

func (t *Time) HourStart() *Time

HourStart time

func (Time) HowLongAgo

func (t Time) HowLongAgo(before time.Time) string

HowLongAgo format diff time to string.

func (*Time) IsAfter

func (t *Time) IsAfter(u time.Time) bool

IsAfter the given time

func (*Time) IsAfterUnix

func (t *Time) IsAfterUnix(ux int64) bool

IsAfterUnix the given unix timestamp

func (*Time) IsBefore

func (t *Time) IsBefore(u time.Time) bool

IsBefore the given time

func (*Time) IsBeforeUnix

func (t *Time) IsBeforeUnix(ux int64) bool

IsBeforeUnix the given unix timestamp

func (*Time) SubDay

func (t *Time) SubDay(day int) *Time

SubDay add some day time for the time

func (*Time) SubHour

func (t *Time) SubHour(hours int) *Time

SubHour add some hour time

func (*Time) SubMinutes

func (t *Time) SubMinutes(minutes int) *Time

SubMinutes add some minutes time for the time

func (*Time) SubSeconds

func (t *Time) SubSeconds(seconds int) *Time

SubSeconds add some seconds time the time

func (Time) SubUnix

func (t Time) SubUnix(u time.Time) int

SubUnix calc diff seconds for t - u

func (Time) T

func (t Time) T() time.Time

T returns the t.Time

func (Time) Timestamp

func (t Time) Timestamp() int64

Timestamp value. alias t.Unix()

func (*Time) Tomorrow

func (t *Time) Tomorrow() *Time

Tomorrow time. get tomorrow time for the time

func (*Time) TplFormat

func (t *Time) TplFormat(template string) string

TplFormat use input template format time to date.

func (*Time) UnmarshalJSON

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

UnmarshalJSON implements the json.Unmarshaler interface.

Tip: will auto match a format by strutil.ToTime()

func (*Time) UnmarshalText

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

UnmarshalText implements the encoding.TextUnmarshaler interface.

Tip: will auto match a format by strutil.ToTime()

func (*Time) Yesterday

func (t *Time) Yesterday() *Time

Yesterday get day ago time for the time

type TimeX

type TimeX = Time

TimeX alias of Time

Jump to

Keyboard shortcuts

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