首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >每日一库:now —— Go 语言时间处理工具库

每日一库:now —— Go 语言时间处理工具库

作者头像
七点一刻
发布2026-03-18 19:03:53
发布2026-03-18 19:03:53
920
举报

简介

jinzhu/now 是一个专注于简化 Go 语言时间操作的轻量级库。它扩展了标准库 time 的功能,提供了一系列便捷方法,用于计算时间段的开始/结束时刻、解析灵活的时间字符串,并支持自定义配置(如周起始日、时区等)。适用于日志统计、报表生成等需要复杂时间计算的场景。

  • GitHub - jinzhu/now: Now is a time toolkit for golang[1]

核心功能

时间计算

  • 获取时间段的起始/结束点:支持从分钟到年度的各粒度计算,如: now.BeginningOfDay() // 当天 00:00:00 now.EndOfMonth() // 当月最后一天的 23:59:59.999999999
  • 动态调整周起始日:默认以周日为一周开始,可配置为周一: now.WeekStartDay = time.Monday now.BeginningOfWeek() // 返回本周一的 00:00:00

时间解析

• 严格错误处理:Parse 返回错误,MustParse 在解析失败时触发 panic。

  • 智能补全日期:支持不完整字符串的解析,自动填充缺失部分为当前时间: now.Parse("2017") // 2017-01-01 00:00:00 now.Parse("10-13") // 当前年份的 10 月 13 日 now.Parse("14") // 当天 14:00:00

灵活配置

  • 自定义时区与格式:支持指定时区和扩展时间格式: loc, _ := time.LoadLocation("Asia/Shanghai") config := &now.Config{ TimeLocation: loc, TimeFormats: []string{"2006/01/02"}, } t := config.Parse("2023/10/01")

基于特定时间计算

  • 可基于任意时间点(而非当前时间)进行计算: t := time.Date(2023, 2, 18, 17, 0, 0, 0, time.UTC) now.With(t).EndOfQuarter() // 2023-03-31 23:59:59.999999999

使用示例

代码语言:javascript
复制
package main

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

funcmain() {
// 计算当前时间的周结束时刻(默认周日为起始)
    endOfWeek := now.EndOfWeek()
    fmt.Println("End of Week (Sun):", endOfWeek)

// 配置周起始日为周一
    now.WeekStartDay = time.Monday
    fmt.Println("End of Week (Mon):", now.EndOfWeek())

// 解析字符串并处理错误
if t, err := now.Parse("2023-10-12 22:14"); err == nil {
        fmt.Println("Parsed Time:", t)
    }
}

扩展性

添加自定义时间格式:通过扩展 TimeFormats 支持更多格式:

代码语言:javascript
复制
now.TimeFormats = append(now.TimeFormats, "2006年01月02日")
t := now.MustParse("2023年10月01日")

注意事项

  • 精度处理:EndOf 系列方法返回纳秒级最大值(如 23:59:59.999999999),确保涵盖时间段的最后一刻。
  • 错误处理:使用 Parse 时需检查错误,避免无效格式导致程序中断。

贡献与社区

  • 作者:Jinzhu Zhang(联系邮箱: wosmvp@gmail.com)
  • 开源贡献:欢迎提交 PR 添加新功能或修复问题。

总结

Jinzhu/now 凭借其简洁的 API 和灵活的配置,成为 Go 开发者处理复杂时间操作的利器。无论是统计时段的界定,还是动态时间解析,该库都能显著提升开发效率。

引用链接

[1]GitHub - jinzhu/now: Now is a time toolkit for golang: https://github.com/jinzhu/now

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七点一刻的魔法书 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 核心功能
  • 使用示例
  • 扩展性
  • 注意事项
  • 贡献与社区
  • 总结
    • 引用链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档