Fetch the repository succeeded.
// Copyright 2020 Douyu
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package xtime
import (
"time"
)
// Time time
type Time struct {
time.Time
}
// Now returns current time
func Now() *Time {
return &Time{
Time: time.Now(),
}
}
// Unix returns time converted from timestamp
func Unix(sec, nsec int64) *Time {
return &Time{
Time: time.Unix(sec, nsec),
}
}
// Today returns begin time of today
func Today() *Time {
return Now().BeginOfDay()
}
// BeginOfYear BeginOfYear beginning of year
func (t *Time) BeginOfYear() *Time {
y, _, _ := t.Date()
return &Time{time.Date(y, time.January, 1, 0, 0, 0, 0, t.Location())}
}
// EndOfYear end of year
func (t *Time) EndOfYear() *Time {
return &Time{t.BeginOfYear().AddDate(1, 0, 0).Add(-time.Nanosecond)}
}
// BeginOfMonth begin of month
func (t *Time) BeginOfMonth() *Time {
y, m, _ := t.Date()
return &Time{time.Date(y, m, 1, 0, 0, 0, 0, t.Location())}
}
// EndOfMonth end of month
func (t *Time) EndOfMonth() *Time {
return &Time{t.BeginOfMonth().AddDate(0, 1, 0).Add(-time.Nanosecond)}
}
// BeginOfWeek the day of begin of week,
// NOTE: week begin from Sunday
func (t *Time) BeginOfWeek() *Time {
y, m, d := t.AddDate(0, 0, 0-int(t.BeginOfDay().Weekday())).Date()
return &Time{time.Date(y, m, d, 0, 0, 0, 0, t.Location())}
}
// EndOfWeek end of week
// NOTE: week end with Saturday
func (t *Time) EndOfWeek() *Time {
y, m, d := t.BeginOfWeek().AddDate(0, 0, 7).Add(-time.Nanosecond).Date()
return &Time{time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), t.Location())}
}
// BeginOfDay returns zero point of time's day
func (t *Time) BeginOfDay() *Time {
y, m, d := t.Date()
return &Time{time.Date(y, m, d, 0, 0, 0, 0, t.Location())}
}
// EndOfDay returns last point of time's day
func (t *Time) EndOfDay() *Time {
y, m, d := t.Date()
return &Time{time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), t.Location())}
}
// BeginOfHour returns zero point of time's day
func (t *Time) BeginOfHour() *Time {
y, m, d := t.Date()
return &Time{time.Date(y, m, d, t.Hour(), 0, 0, 0, t.Location())}
}
// EndOfHour returns last point of time's day
func (t *Time) EndOfHour() *Time {
y, m, d := t.Date()
return &Time{time.Date(y, m, d, t.Hour(), 59, 59, int(time.Second-time.Nanosecond), t.Location())}
}
// BeginOfMinute returns zero point of time's day
func (t *Time) BeginOfMinute() *Time {
y, m, d := t.Date()
return &Time{time.Date(y, m, d, t.Hour(), t.Minute(), 0, 0, t.Location())}
}
// EndOfMinute returns last point of time's day
func (t *Time) EndOfMinute() *Time {
y, m, d := t.Date()
return &Time{time.Date(y, m, d, t.Hour(), t.Minute(), 59, int(time.Second-time.Nanosecond), t.Location())}
}
var TS TimeFormat = "2006-01-02 15:04:05"
type TimeFormat string
func (ts TimeFormat) Format(t time.Time) string {
return t.Format(string(ts))
}
const (
DateFormat = "2006-01-02"
UnixTimeUnitOffset = uint64(time.Millisecond / time.Nanosecond)
)
// FormatTimeMillis formats Unix timestamp (ms) to time string.
func FormatTimeMillis(tsMillis uint64) string {
return time.Unix(0, int64(tsMillis*UnixTimeUnitOffset)).Format(string(TS))
}
// FormatDate formats Unix timestamp (ms) to date string
func FormatDate(tsMillis uint64) string {
return time.Unix(0, int64(tsMillis*UnixTimeUnitOffset)).Format(DateFormat)
}
// Returns the current Unix timestamp in milliseconds.
func CurrentTimeMillis() uint64 {
// Read from cache first.
tickerNow := CurrentTimeMillsWithTicker()
if tickerNow > uint64(0) {
return tickerNow
}
return uint64(time.Now().UnixNano()) / UnixTimeUnitOffset
}
// Returns the current Unix timestamp in nanoseconds.
func CurrentTimeNano() uint64 {
return uint64(time.Now().UnixNano())
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。