Fetch the repository succeeded.
package moment
import (
"fmt"
"strings"
"time"
)
// Time Formate format
var (
// TimeAndDate2 eg.2006-01-02 15:04:05
TimeAndDate2 = "2006-01-02 15:04:05"
// TimeAndDate2 eg.2006-01-02 15:04:05 -0700 MST
TimeAndDate2WithTimezone = "2006-01-02 15:04:05.999999999 -0700 MST"
// PGTimestampStyle 2006-01-02 15:04:05.999999-07
PGTimestamp = "2006-01-02 15:04:05.999999-07"
YYYY = "2006"
YY = "06"
MM = "01"
DD = "02"
H12 = "3"
Minute = "04"
SS = "05"
Timezone = "MST"
TimezoneOffset = "-0700"
MMDDYY = "01/02/06"
YYYYMMDD = "2006-01-02"
HHmm = "15:04"
HHmmss = "15:04:05"
HmmssPM = "3:04:05 PM"
AmPm = "PM"
)
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-02T15:04:05-07:00",
"2006-01-02 15:04:05.999999999",
"2006.1.2", "2006.1.2 15:04:05", "2006.01.02", "2006.01.02 15:04:05",
"1/2/2006", "1/2/2006 15:4:5", "2006/01/02", "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, RFC3339 取时间戳转换
time.Kitchen, time.Stamp, time.StampMilli, time.StampMicro, time.StampNano,
PGTimestamp, TimeAndDate2, TimeAndDate2WithTimezone,
}
// Now 返回 golang 内建的 time.Now()
func Now() time.Time {
return time.Now()
}
// ToANSIC 格式化指定时间到 Mon Jan _2 15:04:05 2006 格式
func ToANSIC(t time.Time) string {
return Format(t, time.ANSIC)
}
// ToRFC3339 格式化指定时间到 2006-01-02T15:04:05Z07:00 格式
func ToRFC3339(t time.Time) string {
return Format(t, time.RFC3339)
}
// ToTimeAndDate2 格式化指定时间到 2006-01-02 15:04:05 格式
func ToTimeAndDate2(t time.Time) string {
return Format(t, TimeAndDate2)
}
// ToTimeAndDate2WithTimezone 格式化指定时间到 2006-01-02 15:04:05 -0700 MST 格式
func ToTimeAndDate2WithTimezone(t time.Time) string {
return Format(t, TimeAndDate2WithTimezone)
}
// ToPGTimestamp 格式化指定时间到 2006-01-02 15:04:05.999999-07 格式
func ToPGTimestamp(t time.Time) string {
return Format(t, PGTimestamp)
}
// ToYYYYMMDD 格式化指定时间到 2006-01-02 格式
func ToYYYYMMDD(t time.Time) string {
return Format(t, YYYYMMDD)
}
// ToHHmmss 格式化指定时间到 15:04:05 格式
func ToHHmmss(t time.Time) string {
return Format(t, HHmmss)
}
// Format 返回日期时间的格式化结果
func Format(t time.Time, format ...string) string {
bs := []byte{}
bs = t.AppendFormat(bs, strings.Join(format, " "))
return string(bs)
}
// From 将字符串转换为 `time.Time`
func From(str string, timeFormat ...string) (time.Time, error) {
tfs := append(timeFormats, timeFormat...)
for _, tf := range tfs {
stamp, err := time.ParseInLocation(tf, str, time.Local)
if err == nil {
return time.Unix(0, stamp.UnixNano()), nil
}
}
return time.Time{}, fmt.Errorf("can't parse string as time: %s", str)
}
// BeginningOfMinute 返回指定时间的第0秒 2013-11-18 17:51:00 Mon
func BeginningOfMinute(t time.Time) time.Time {
return t.Truncate(time.Minute)
}
// BeginningOfHour 返回指定时间的第0分钟 2013-11-18 17:00:00 Mon
func BeginningOfHour(t time.Time) time.Time {
y, m, d := t.Date()
return time.Date(y, m, d, t.Hour(), 0, 0, 0, t.Location())
}
// BeginningOfDay 返回指定时间的当天内的第0小时 2013-11-18 00:00:00 Mon
func BeginningOfDay(t time.Time) time.Time {
y, m, d := t.Date()
return time.Date(y, m, d, 0, 0, 0, 0, t.Location())
}
// BeginningOfWeek 返回指定时间所在周的第0天 2013-11-17 00:00:00 Sun
func BeginningOfWeek(t time.Time, weekStartDay time.Weekday) time.Time {
t2 := BeginningOfDay(t)
weekday := int(t.Weekday())
if weekStartDay != time.Sunday {
weekStartDayInt := int(weekStartDay)
if weekday < weekStartDayInt {
weekday = weekday + 7 - weekStartDayInt
} else {
weekday -= weekStartDayInt
}
}
return t2.AddDate(0, 0, -weekday)
}
// BeginningOfMonth 返回指定时间所在月的第0天 2013-11-01 00:00:00 Fri
func BeginningOfMonth(t time.Time) time.Time {
y, m, _ := t.Date()
return time.Date(y, m, 1, 0, 0, 0, 0, t.Location())
}
// BeginningOfQuarter 返回指定时间所在季度的第0天 2013-10-01 00:00:00 Tue
func BeginningOfQuarter(t time.Time) time.Time {
month := BeginningOfMonth(t)
offset := (int(month.Month()) - 1) % 3
return month.AddDate(0, -offset, 0)
}
// BeginningOfHalf 返回指定时间所在半年的第0天 2013-07-01 00:00:00 Tue
func BeginningOfHalf(t time.Time) time.Time {
month := BeginningOfMonth(t)
offset := (int(month.Month()) - 1) % 6
return month.AddDate(0, -offset, 0)
}
// BeginningOfYear 返回指定时间所在年的第0天 2013-01-01 00:00:00 Tue
func BeginningOfYear(t time.Time) time.Time {
y, _, _ := t.Date()
return time.Date(y, time.January, 1, 0, 0, 0, 0, t.Location())
}
// EndOfMinute 返回指定时间的当前分钟的最后 2013-11-18 17:51:59.999999999 Mon
func EndOfMinute(t time.Time) time.Time {
return BeginningOfMinute(t).Add(time.Minute - time.Nanosecond)
}
// EndOfHour 返回指定时间的当前小时的最后 2013-11-18 17:59:59.999999999 Mon
func EndOfHour(t time.Time) time.Time {
return BeginningOfHour(t).Add(time.Hour - time.Nanosecond)
}
// EndOfDay 返回指定时间的当天的最后 2013-11-18 23:59:59.999999999 Mon
func EndOfDay(t time.Time) time.Time {
y, m, d := t.Date()
return time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), t.Location())
}
// EndOfWeek 返回指定时间的当周的最后 2013-11-23 23:59:59.999999999 Sat
func EndOfWeek(t time.Time, weekStartDay time.Weekday) time.Time {
return BeginningOfWeek(t, weekStartDay).AddDate(0, 0, 7).Add(-time.Nanosecond)
}
// EndOfMonth 返回指定时间的当月的最后 2013-11-30 23:59:59.999999999 Sat
func EndOfMonth(t time.Time) time.Time {
return BeginningOfMonth(t).AddDate(0, 1, 0).Add(-time.Nanosecond)
}
// EndOfQuarter 返回指定时间的当季度的最后 2013-12-31 23:59:59.999999999 Tue
func EndOfQuarter(t time.Time) time.Time {
return BeginningOfQuarter(t).AddDate(0, 3, 0).Add(-time.Nanosecond)
}
// EndOfHalf 返回指定时间的所在半年的最后 2013-12-31 23:59:59.999999999 Tue
func EndOfHalf(t time.Time) time.Time {
return BeginningOfHalf(t).AddDate(0, 6, 0).Add(-time.Nanosecond)
}
// EndOfYear 返回指定时间的所在年的最后 2013-12-31 23:59:59.999999999 Tue
func EndOfYear(t time.Time) time.Time {
return BeginningOfYear(t).AddDate(1, 0, 0).Add(-time.Nanosecond)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。