123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- package mhayaTime
- import (
- "time"
- )
- // AddDuration 按照持续时间字符串增加时间
- // 支持整数/浮点数和符号ns(纳秒)、us(微妙)、ms(毫秒)、s(秒)、m(分钟)、h(小时)的组合
- func (c *MhayaTime) AddDuration(duration string) error {
- td, err := ParseByDuration(duration)
- if err != nil {
- return err
- }
- c.Time = c.Add(td)
- return nil
- }
- // SubDuration 按照持续时间字符串减少时间
- // 支持整数/浮点数和符号ns(纳秒)、us(微妙)、ms(毫秒)、s(秒)、m(分钟)、h(小时)的组合
- func (c *MhayaTime) SubDuration(duration string) error {
- return c.AddDuration("-" + duration)
- }
- // AddCenturies N世纪后
- func (c *MhayaTime) AddCenturies(centuries int) {
- c.AddYears(YearsPerCentury * centuries)
- }
- // AddCenturiesNoOverflow N世纪后(月份不溢出)
- func (c *MhayaTime) AddCenturiesNoOverflow(centuries int) {
- c.AddYearsNoOverflow(centuries * YearsPerCentury)
- }
- // AddCentury 1世纪后
- func (c *MhayaTime) AddCentury() {
- c.AddCenturies(1)
- }
- // AddCenturyNoOverflow 1世纪后(月份不溢出)
- func (c *MhayaTime) AddCenturyNoOverflow() {
- c.AddCenturiesNoOverflow(1)
- }
- // SubCenturies N世纪前
- func (c *MhayaTime) SubCenturies(centuries int) {
- c.SubYears(YearsPerCentury * centuries)
- }
- // SubCenturiesNoOverflow N世纪前(月份不溢出)
- func (c *MhayaTime) SubCenturiesNoOverflow(centuries int) {
- c.SubYearsNoOverflow(centuries * YearsPerCentury)
- }
- // SubCentury 1世纪前
- func (c *MhayaTime) SubCentury() {
- c.SubCenturies(1)
- }
- // SubCenturyNoOverflow 1世纪前(月份不溢出)
- func (c *MhayaTime) SubCenturyNoOverflow() {
- c.SubCenturiesNoOverflow(1)
- }
- // AddYears N年后
- func (c *MhayaTime) AddYears(years int) {
- c.Time = c.Time.AddDate(years, 0, 0)
- }
- // AddYearsNoOverflow N年后(月份不溢出)
- func (c *MhayaTime) AddYearsNoOverflow(years int) {
- // 获取N年后本月的最后一天
- last := time.Date(c.Year()+years, c.Time.Month(), 1, c.Hour(), c.Minute(), c.Second(), c.Nanosecond(), c.Location()).AddDate(0, 1, -1)
- day := c.Day()
- if c.Day() > last.Day() {
- day = last.Day()
- }
- c.Time = time.Date(last.Year(), last.Month(), day, c.Hour(), c.Minute(), c.Second(), c.Nanosecond(), c.Location())
- }
- // AddYear 1年后
- func (c *MhayaTime) AddYear() {
- c.AddYears(1)
- }
- // AddYearNoOverflow 1年后(月份不溢出)
- func (c *MhayaTime) AddYearNoOverflow() {
- c.AddYearsNoOverflow(1)
- }
- // SubYears N年前
- func (c *MhayaTime) SubYears(years int) {
- c.AddYears(-years)
- }
- // SubYearsNoOverflow N年前(月份不溢出)
- func (c *MhayaTime) SubYearsNoOverflow(years int) {
- c.AddYearsNoOverflow(-years)
- }
- // SubYear 1年前
- func (c *MhayaTime) SubYear() {
- c.SubYears(1)
- }
- // SubYearNoOverflow 1年前(月份不溢出)
- func (c *MhayaTime) SubYearNoOverflow() {
- c.SubYearsNoOverflow(1)
- }
- // AddQuarters N季度后
- func (c *MhayaTime) AddQuarters(quarters int) {
- c.AddMonths(quarters * MonthsPerQuarter)
- }
- // AddQuartersNoOverflow N季度后(月份不溢出)
- func (c *MhayaTime) AddQuartersNoOverflow(quarters int) {
- c.AddMonthsNoOverflow(quarters * MonthsPerQuarter)
- }
- // AddQuarter 1季度后
- func (c *MhayaTime) AddQuarter() {
- c.AddQuarters(1)
- }
- // AddQuarterNoOverflow 1季度后(月份不溢出)
- func (c *MhayaTime) AddQuarterNoOverflow() {
- c.AddQuartersNoOverflow(1)
- }
- // SubQuarters N季度前
- func (c *MhayaTime) SubQuarters(quarters int) {
- c.AddQuarters(-quarters)
- }
- // SubQuartersNoOverflow N季度前(月份不溢出)
- func (c *MhayaTime) SubQuartersNoOverflow(quarters int) {
- c.AddMonthsNoOverflow(-quarters * MonthsPerQuarter)
- }
- // SubQuarter 1季度前
- func (c *MhayaTime) SubQuarter() {
- c.SubQuarters(1)
- }
- // SubQuarterNoOverflow 1季度前(月份不溢出)
- func (c *MhayaTime) SubQuarterNoOverflow() {
- c.SubQuartersNoOverflow(1)
- }
- // AddMonths N月后
- func (c *MhayaTime) AddMonths(months int) {
- c.Time = c.Time.AddDate(0, months, 0)
- }
- // AddMonthsNoOverflow N月后(月份不溢出)
- func (c *MhayaTime) AddMonthsNoOverflow(months int) {
- month := c.Time.Month() + time.Month(months)
- // 获取N月后的最后一天
- last := time.Date(c.Year(), month, 1, c.Hour(), c.Minute(), c.Second(), c.Nanosecond(), c.Location()).AddDate(0, 1, -1)
- day := c.Day()
- if c.Day() > last.Day() {
- day = last.Day()
- }
- c.Time = time.Date(last.Year(), last.Month(), day, c.Hour(), c.Minute(), c.Second(), c.Nanosecond(), c.Location())
- }
- // AddMonth 1月后
- func (c *MhayaTime) AddMonth() {
- c.AddMonths(1)
- }
- // AddMonthNoOverflow 1月后(月份不溢出)
- func (c *MhayaTime) AddMonthNoOverflow() {
- c.AddMonthsNoOverflow(1)
- }
- // SubMonths N月前
- func (c *MhayaTime) SubMonths(months int) {
- c.AddMonths(-months)
- }
- // SubMonthsNoOverflow N月前(月份不溢出)
- func (c *MhayaTime) SubMonthsNoOverflow(months int) {
- c.AddMonthsNoOverflow(-months)
- }
- // SubMonth 1月前
- func (c *MhayaTime) SubMonth() {
- c.SubMonths(1)
- }
- // SubMonthNoOverflow 1月前(月份不溢出)
- func (c *MhayaTime) SubMonthNoOverflow() {
- c.SubMonthsNoOverflow(1)
- }
- // AddWeeks N周后
- func (c *MhayaTime) AddWeeks(weeks int) {
- c.AddDays(weeks * DaysPerWeek)
- }
- // AddWeek 1天后
- func (c *MhayaTime) AddWeek() {
- c.AddWeeks(1)
- }
- // SubWeeks N周后
- func (c *MhayaTime) SubWeeks(weeks int) {
- c.SubDays(weeks * DaysPerWeek)
- }
- // SubWeek 1天后
- func (c *MhayaTime) SubWeek() {
- c.SubWeeks(1)
- }
- // AddDays N天后
- func (c *MhayaTime) AddDays(days int) {
- c.Time = c.Time.AddDate(0, 0, days)
- }
- // AddDay 1天后
- func (c *MhayaTime) AddDay() {
- c.AddDays(1)
- }
- // SubDays N天前
- func (c *MhayaTime) SubDays(days int) {
- c.AddDays(-days)
- }
- // SubDay 1天前
- func (c *MhayaTime) SubDay() {
- c.SubDays(1)
- }
- // AddHours N小时后
- func (c *MhayaTime) AddHours(hours int) {
- td := time.Duration(hours) * time.Hour
- c.Time = c.Time.Add(td)
- }
- // AddHour 1小时后
- func (c *MhayaTime) AddHour() {
- c.AddHours(1)
- }
- // SubHours N小时前
- func (c *MhayaTime) SubHours(hours int) {
- c.AddHours(-hours)
- }
- // SubHour 1小时前
- func (c *MhayaTime) SubHour() {
- c.SubHours(1)
- }
- // AddMinutes N分钟后
- func (c *MhayaTime) AddMinutes(minutes int) {
- td := time.Duration(minutes) * time.Minute
- c.Time = c.Time.Add(td)
- }
- // AddMinute 1分钟后
- func (c *MhayaTime) AddMinute() {
- c.AddMinutes(1)
- }
- // SubMinutes N分钟前
- func (c *MhayaTime) SubMinutes(minutes int) {
- c.AddMinutes(-minutes)
- }
- // SubMinute 1分钟前
- func (c *MhayaTime) SubMinute() {
- c.SubMinutes(1)
- }
- // AddSeconds N秒钟后
- func (c *MhayaTime) AddSeconds(seconds int) {
- td := time.Duration(seconds) * time.Second
- c.Time = c.Time.Add(td)
- }
- // AddSecond 1秒钟后
- func (c *MhayaTime) AddSecond() {
- c.AddSeconds(1)
- }
- // SubSeconds N秒钟前
- func (c *MhayaTime) SubSeconds(seconds int) {
- c.AddSeconds(-seconds)
- }
- // SubSecond 1秒钟前
- func (c *MhayaTime) SubSecond() {
- c.SubSeconds(1)
- }
|