201 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			201 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package now is a time toolkit for golang.
 | 
						|
//
 | 
						|
// More details README here: https://github.com/jinzhu/now
 | 
						|
//
 | 
						|
//  import "github.com/jinzhu/now"
 | 
						|
//
 | 
						|
//  now.BeginningOfMinute() // 2013-11-18 17:51:00 Mon
 | 
						|
//  now.BeginningOfDay()    // 2013-11-18 00:00:00 Mon
 | 
						|
//  now.EndOfDay()          // 2013-11-18 23:59:59.999999999 Mon
 | 
						|
package now
 | 
						|
 | 
						|
import "time"
 | 
						|
 | 
						|
// WeekStartDay set week start day, default is sunday
 | 
						|
var WeekStartDay = time.Sunday
 | 
						|
 | 
						|
// TimeFormats default time formats will be parsed as
 | 
						|
var TimeFormats = []string{
 | 
						|
	"2006", "2006-1", "2006-1-2", "2006-1-2 15", "2006-1-2 15:4", "2006-1-2 15:4:5", "1-2",
 | 
						|
	"15:4:5", "15:4", "15",
 | 
						|
	"15:4:5 Jan 2, 2006 MST", "2006-01-02 15:04:05.999999999 -0700 MST", "2006-01-02T15:04:05Z0700", "2006-01-02T15:04:05Z07",
 | 
						|
	"2006.1.2", "2006.1.2 15:04:05", "2006.01.02", "2006.01.02 15:04:05", "2006.01.02 15:04:05.999999999",
 | 
						|
	"1/2/2006", "1/2/2006 15:4:5", "2006/01/02", "20060102", "2006/01/02 15:04:05",
 | 
						|
	time.ANSIC, time.UnixDate, time.RubyDate, time.RFC822, time.RFC822Z, time.RFC850,
 | 
						|
	time.RFC1123, time.RFC1123Z, time.RFC3339, time.RFC3339Nano,
 | 
						|
	time.Kitchen, time.Stamp, time.StampMilli, time.StampMicro, time.StampNano,
 | 
						|
}
 | 
						|
 | 
						|
// Config configuration for now package
 | 
						|
type Config struct {
 | 
						|
	WeekStartDay time.Weekday
 | 
						|
	TimeLocation *time.Location
 | 
						|
	TimeFormats  []string
 | 
						|
}
 | 
						|
 | 
						|
// DefaultConfig default config
 | 
						|
var DefaultConfig *Config
 | 
						|
 | 
						|
// New initialize Now based on configuration
 | 
						|
func (config *Config) With(t time.Time) *Now {
 | 
						|
	return &Now{Time: t, Config: config}
 | 
						|
}
 | 
						|
 | 
						|
// Parse parse string to time based on configuration
 | 
						|
func (config *Config) Parse(strs ...string) (time.Time, error) {
 | 
						|
	if config.TimeLocation == nil {
 | 
						|
		return config.With(time.Now()).Parse(strs...)
 | 
						|
	} else {
 | 
						|
		return config.With(time.Now().In(config.TimeLocation)).Parse(strs...)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// MustParse must parse string to time or will panic
 | 
						|
func (config *Config) MustParse(strs ...string) time.Time {
 | 
						|
	if config.TimeLocation == nil {
 | 
						|
		return config.With(time.Now()).MustParse(strs...)
 | 
						|
	} else {
 | 
						|
		return config.With(time.Now().In(config.TimeLocation)).MustParse(strs...)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// Now now struct
 | 
						|
type Now struct {
 | 
						|
	time.Time
 | 
						|
	*Config
 | 
						|
}
 | 
						|
 | 
						|
// With initialize Now with time
 | 
						|
func With(t time.Time) *Now {
 | 
						|
	config := DefaultConfig
 | 
						|
	if config == nil {
 | 
						|
		config = &Config{
 | 
						|
			WeekStartDay: WeekStartDay,
 | 
						|
			TimeFormats:  TimeFormats,
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return &Now{Time: t, Config: config}
 | 
						|
}
 | 
						|
 | 
						|
// New initialize Now with time
 | 
						|
func New(t time.Time) *Now {
 | 
						|
	return With(t)
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfMinute beginning of minute
 | 
						|
func BeginningOfMinute() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfMinute()
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfHour beginning of hour
 | 
						|
func BeginningOfHour() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfHour()
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfDay beginning of day
 | 
						|
func BeginningOfDay() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfDay()
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfWeek beginning of week
 | 
						|
func BeginningOfWeek() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfWeek()
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfMonth beginning of month
 | 
						|
func BeginningOfMonth() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfMonth()
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfQuarter beginning of quarter
 | 
						|
func BeginningOfQuarter() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfQuarter()
 | 
						|
}
 | 
						|
 | 
						|
// BeginningOfYear beginning of year
 | 
						|
func BeginningOfYear() time.Time {
 | 
						|
	return With(time.Now()).BeginningOfYear()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfMinute end of minute
 | 
						|
func EndOfMinute() time.Time {
 | 
						|
	return With(time.Now()).EndOfMinute()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfHour end of hour
 | 
						|
func EndOfHour() time.Time {
 | 
						|
	return With(time.Now()).EndOfHour()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfDay end of day
 | 
						|
func EndOfDay() time.Time {
 | 
						|
	return With(time.Now()).EndOfDay()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfWeek end of week
 | 
						|
func EndOfWeek() time.Time {
 | 
						|
	return With(time.Now()).EndOfWeek()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfMonth end of month
 | 
						|
func EndOfMonth() time.Time {
 | 
						|
	return With(time.Now()).EndOfMonth()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfQuarter end of quarter
 | 
						|
func EndOfQuarter() time.Time {
 | 
						|
	return With(time.Now()).EndOfQuarter()
 | 
						|
}
 | 
						|
 | 
						|
// EndOfYear end of year
 | 
						|
func EndOfYear() time.Time {
 | 
						|
	return With(time.Now()).EndOfYear()
 | 
						|
}
 | 
						|
 | 
						|
// Monday monday
 | 
						|
 | 
						|
func Monday(strs ...string) time.Time {
 | 
						|
	return With(time.Now()).Monday(strs...)
 | 
						|
}
 | 
						|
 | 
						|
// Sunday sunday
 | 
						|
func Sunday(strs ...string) time.Time {
 | 
						|
	return With(time.Now()).Sunday(strs...)
 | 
						|
}
 | 
						|
 | 
						|
// EndOfSunday end of sunday
 | 
						|
func EndOfSunday() time.Time {
 | 
						|
	return With(time.Now()).EndOfSunday()
 | 
						|
}
 | 
						|
 | 
						|
// Quarter returns the yearly quarter
 | 
						|
func Quarter() uint {
 | 
						|
	return With(time.Now()).Quarter()
 | 
						|
}
 | 
						|
 | 
						|
// Parse parse string to time
 | 
						|
func Parse(strs ...string) (time.Time, error) {
 | 
						|
	return With(time.Now()).Parse(strs...)
 | 
						|
}
 | 
						|
 | 
						|
// ParseInLocation parse string to time in location
 | 
						|
func ParseInLocation(loc *time.Location, strs ...string) (time.Time, error) {
 | 
						|
	return With(time.Now().In(loc)).Parse(strs...)
 | 
						|
}
 | 
						|
 | 
						|
// MustParse must parse string to time or will panic
 | 
						|
func MustParse(strs ...string) time.Time {
 | 
						|
	return With(time.Now()).MustParse(strs...)
 | 
						|
}
 | 
						|
 | 
						|
// MustParseInLocation must parse string to time in location or will panic
 | 
						|
func MustParseInLocation(loc *time.Location, strs ...string) time.Time {
 | 
						|
	return With(time.Now().In(loc)).MustParse(strs...)
 | 
						|
}
 | 
						|
 | 
						|
// Between check now between the begin, end time or not
 | 
						|
func Between(time1, time2 string) bool {
 | 
						|
	return With(time.Now()).Between(time1, time2)
 | 
						|
}
 |