package carbon import "time" const ( minDuration Duration = -1 << 63 maxDuration Duration = 1<<63 - 1 ) // MaxValue returns a Carbon instance for the greatest supported date. // 返回 Carbon 的最大值 func MaxValue() *Carbon { return NewCarbon(time.Date(9999, time.December, 31, 23, 59, 59, 999999999, time.UTC)) } // MinValue returns a Carbon instance for the lowest supported date. // 返回 Carbon 的最小值 func MinValue() *Carbon { return NewCarbon(time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)) } // MaxDuration returns the maximum duration value. // 返回 Duration 的最大值 func MaxDuration() Duration { return maxDuration } // MinDuration returns the minimum duration value. // 返回 Duration 的最小值 func MinDuration() Duration { return minDuration } // Max returns the maximum Carbon instance from the given Carbon instance. // 返回最大的 Carbon 实例 func Max(c1 *Carbon, c2 ...*Carbon) (c *Carbon) { c = c1 if len(c2) == 0 { return } for i := range c2 { if c.IsInvalid() || c2[i].IsInvalid() { return nil } if c2[i].Gte(c) { c = c2[i] } } return } // Min returns the minimum Carbon instance from the given Carbon instance. // 返回最小的 Carbon 实例 func Min(c1 *Carbon, c2 ...*Carbon) (c *Carbon) { c = c1 if len(c2) == 0 { return } for i := range c2 { if c.IsInvalid() || c2[i].IsInvalid() { return nil } if c2[i].Lte(c) { c = c2[i] } } return } // Closest returns the closest Carbon instance from the given Carbon instance. // 返回离给定 carbon 实例最近的 Carbon 实例 func (c *Carbon) Closest(c1 *Carbon, c2 *Carbon) *Carbon { if c.IsInvalid() || c1.IsInvalid() || c2.IsInvalid() { return nil } if c.DiffAbsInSeconds(c1) < c.DiffAbsInSeconds(c2) { return c1 } return c2 } // Farthest returns the farthest Carbon instance from the given Carbon instance. // 返回离给定 carbon 实例最远的 Carbon 实例 func (c *Carbon) Farthest(c1 *Carbon, c2 *Carbon) *Carbon { if c.IsInvalid() || c1.IsInvalid() || c2.IsInvalid() { return nil } if c.DiffAbsInSeconds(c1) > c.DiffAbsInSeconds(c2) { return c1 } return c2 }