← gg 图形库 | YAML →

Now - Go 时间处理库

now 是一个时间处理辅助库,提供了便捷的方法来计算本周、本月、本年等常用时间范围。掌握 now 可以简化时间相关的计算。

基础使用

📝 时间计算

package main

import (
    "fmt"
    "time"
    "github.com/jinzhu/now"
)

func main() {
    // 使用当前时间
    t := time.Now()
    
    // 本日开始
    beginningOfDay := now.BeginningOfDay(t)
    fmt.Println("Beginning of day:", beginningOfDay)
    
    // 本日结束
    endOfDay := now.EndOfDay(t)
    fmt.Println("End of day:", endOfDay)
    
    // 本周开始
    beginningOfWeek := now.BeginningOfWeek(t)
    fmt.Println("Beginning of week:", beginningOfWeek)
    
    // 本周结束
    endOfWeek := now.EndOfWeek(t)
    fmt.Println("End of week:", endOfWeek)
    
    // 本月开始
    beginningOfMonth := now.BeginningOfMonth(t)
    fmt.Println("Beginning of month:", beginningOfMonth)
    
    // 本月结束
    endOfMonth := now.EndOfMonth(t)
    fmt.Println("End of month:", endOfMonth)
    
    // 本年开始
    beginningOfYear := now.BeginningOfYear(t)
    fmt.Println("Beginning of year:", beginningOfYear)
    
    // 本年结束
    endOfYear := now.EndOfYear(t)
    fmt.Println("End of year:", endOfYear)
}

自定义配置

📝 配置周起始日

package main

import (
    "fmt"
    "time"
    "github.com/jinzhu/now"
)

func main() {
    t := time.Now()
    
    // 设置周起始日为周一 (默认)
    now.WeekStartDay = time.Monday
    fmt.Println("Week start Monday:", now.BeginningOfWeek(t))
    
    // 设置周起始日为周日
    now.WeekStartDay = time.Sunday
    fmt.Println("Week start Sunday:", now.BeginningOfWeek(t))
    
    // 使用 With 方法 (不影响全局)
    n := now.With(t).Monday()
    fmt.Println("This Monday:", n)
}

常用方法

📝 时间快捷方法

package main

import (
    "fmt"
    "time"
    "github.com/jinzhu/now"
)

func main() {
    t := time.Now()
    n := now.With(t)
    
    // 本周几
    fmt.Println("Monday:", n.Monday())
    fmt.Println("Sunday:", n.Sunday())
    
    // 上下月
    fmt.Println("Last month begin:", n.BeginningOfMonth().AddDate(0, -1, 0))
    fmt.Println("Next month begin:", n.BeginningOfMonth().AddDate(0, 1, 0))
    
    // 上下年
    fmt.Println("Last year:", n.BeginningOfYear().AddDate(-1, 0, 0))
    fmt.Println("Next year:", n.BeginningOfYear().AddDate(1, 0, 0))
    
    // 昨天/明天
    fmt.Println("Yesterday:", n.BeginningOfDay().AddDate(0, 0, -1))
    fmt.Println("Tomorrow:", n.BeginningOfDay().AddDate(0, 0, 1))
}

📖 延伸阅读