惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
大猫的无限游戏
大猫的无限游戏
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Jina AI
Jina AI
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
B
Blog RSS Feed
Last Week in AI
Last Week in AI
The Cloudflare Blog
V
Visual Studio Blog
P
Proofpoint News Feed
博客园 - 叶小钗
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recorded Future
Recorded Future
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
罗磊的独立博客
雷峰网
雷峰网
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
L
LINUX DO - 热门话题
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
Martin Fowler
Martin Fowler
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
C
Cybersecurity and Infrastructure Security Agency CISA
小众软件
小众软件
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Announcements
Recent Announcements
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
宝玉的分享
宝玉的分享
D
DataBreaches.Net
T
The Exploit Database - CXSecurity.com
Vercel News
Vercel News
IT之家
IT之家
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Troy Hunt's Blog
aimingoo的专栏
aimingoo的专栏

Go 编程语言

构建时自动注入版本号:从 Git tag 到 Go 可执行文件 - V2EX [边缘计算] 想借助 AI 来开发 边缘网关接入 AI 解决设备通信 不知道有没有需求 - V2EX [Go]工业边缘计算网关 edgex 业余时间独立开发 持续更新半年咯 求个 star - V2EX eget:不用等中央仓库,直接安装 GitHub 和任意下载站的工具 - V2EX gookit/gcli v3.8:新增支持共享选项、文档生成和参数重排 - V2EX V2EX 我开源了一款极简的 P2P 文件传输与 VPN 工具 (Win/Mac/ Linux /Android) - V2EX gookit/gcli v3.5.0 发布 - 简单易用、功能丰富的 Go 命令行应用与工具库 - V2EX 用 Go gRPC 信令对接 Android WebRTC:大家一般怎么划分网关和客户端边界? 在服务端用 Pion + FFmpeg + RNN 做 WebRTC 通话降噪,值得吗? 这两种 lint 报错场景, v 友们一般怎么处理 - V2EX tikrok 的部分来时路 tikrok 第 7 代微服务重构: Golang 微服务 grpc 接口与服务实现隔离方案 写了个 Go 库:在 TCP 应用协议开始前做认证,也支持端口敲门 Tikrok v6.0 新的生产级架构,成本不变,但是部署复杂略有增加 go 打包的二进制程序怎么反编译 [边缘计算开源] 工业数据采集网关 版本更新 用 golang 写了,一套面向个人音乐资产的本地优先音乐系统 做了个 Go 的 MCP Server 框架,一行代码把 Gin API 接入 AI - V2EX 写了个 Go 库解决 LLM 流式输出断线重连的问题 - V2EX Tikrok v5.0 新的的底层实现 - V2EX OpenTelemetry 分布式追踪中的回溯采样:削减 60% 尾部采样成本 - V2EX 求推荐一个 go 里运行 js 的方案 - V2EX [边缘计算] 基于 GO 的采集网关持续更新啦 - V2EX [边缘计算开源] 基于 go 写了个独立运行的工业数据采集网关 后续阶段应该如何调整 - V2EX 然后 go-kratos 不怎么活跃了,连最火的 skills 都不搞, github 也没什么人回复了 - V2EX Excelize 开源基础库发布 2.10.1 版本更新 phper 转 go 最好的 web 框架是 goframe 吗? - V2EX A Visual Studio Code extension that displays the disk size of Go module dependencies in go.mod files. - V2EX miglite: Go 极简高效的数据库迁移工具 - V2EX 每秒万级 Tick 震荡:高频行情分发,该选 Golang 的并发原生还是 Rust 的极致性能? - V2EX 给 netcat 引入了 P2P 穿透、多路复用、强加密以及内置服务模块,并且完全开源 - V2EX 使用 "go.inlayHints.parameterNames": true 在 vscode 中开启类似 goland 的参数提示 - V2EX 下面代码中 f()会被重复执行吗?大佬帮忙解答一下~ - V2EX sublimetext 开发 GO 使用体验怎么样 - V2EX [开源] 将 react 的 hooks 和 组件化思路带入 go 的 TUI 开发。 - V2EX gocar 0.2.0 版本:新增自定义命令功能,实现真正的 go 的 cargo - V2EX go 新手,求问导入包失败问题 - V2EX 之前写的, JSR-310 风格的时间日期库, 1.0 了 - V2EX 为了方便学习 go, 使用 go 做了一个命令行版本的 go playground, 代码直接一键运行, 一键编译 - V2EX 虚心请教 Go 前辈们,关于入行 - V2EX 关于 Go 的工程经验 - V2EX 微信开发框架开源,基于 Go+Wails3+React - V2EX Golang 实现的开源 NVR 支持 GB28181 & ONVIF 啦 - V2EX Go 工具库 gookit/goutil v0.7.2 发布:增强功能与修复,提升开发体验 - V2EX go-carbon v2.6.15 正式版发布,已被 docker 官方组织使用 - V2EX 如何用 3–5 个高效问题快速识别 Golang 开发者的技术素养? - V2EX 有没有 go 的 ai 应用项目学习学习 - V2EX Go 环境版本管理用哪个- -有点疑惑 - V2EX Goland 下的通义千问不能选择模型,VScode 下面的通义千问可以选择模型 - V2EX 新手入门求指导 - V2EX go-dongle v1.2.0 发布,新增 SM2 非对称椭圆曲线加密算法支持 - V2EX Wails2+Vue3 本地的绑定文件和 Vite 上的不一致 - V2EX go 返回错误的时候, 返回的值应该可用吗 - V2EX Go 入门基础课(2025 Golang) - V2EX goland 中如何 debug wails - V2EX 日期函数获取上一个月 bug, 在一些特殊日子才出现,比如今天 10-31 - V2EX go-carbon v2.6.14 发布,一个轻量级、语义化的 golang 时间处理库 - V2EX goroutine 到底算不算一种 coroutine 的实现? - V2EX 为什么不用 gRPC-Go: VictoriaTraces 中实现 OTLP/gRPC 的幕后故事 - V2EX go 最新版的 map 并发读是安全的吗。 - V2EX 请问一下 golang 下有什么成熟稳定的串口通讯包? - V2EX golang.org/x/sync/syncmap 被 struct 裹挟时 使用前为什么必须为每个键初始化 不然取值得到 nil go-dongle v1.1.7 发布,新增 SM4 国密分组对称加密算法支持 在开发接口的过程中,如何快速验证结果? - V2EX go-carbon v2.6.13 发布,一个轻量级、语义化的 golang 时间处理库
看 Go 的时间库不顺眼很久了,所以从别的语言里抄了一个 - V2EX
iseki · 2025-11-12 · via Go 编程语言

这是一个创建于 215 天前的主题,其中的信息可能已经有所发展或是发生改变。

主要的内容是将 time.Time 按照不同的使用场景细分为 LocalDate LocalTime LocalDateTime OffsetDateTime 以及将来会有的 ZonedDateTime 等,将类型安全进行到底 xD 。

设计上尽量仿照 JSR-310 ,毕竟这个切分类型的思想也源自 JSR-310 。参考:threeten.org

对于某些可做出不同决策且个人不认为有明确优劣之分的设计,原则上遵守 JSR-310 习惯。

此外:

  • 大部分代码使用 AI 完成,但都经过人工评审,可以放心使用。
  • 该项目主要是参考既有成熟设计( JSR-310 ),涉及复杂算法的部分已经经过仔细的人工评审。
  • 当前剩余和时区有关的部分尚未完善,因为 Go 没有很好地暴露 time.Location 抽象,自行携带时区数据库基础设施显得过于笨重,目前还在考虑具体解决方案。此外因为大部分对标 ZonedDateTime 的操作均可通过 Go 标准库的 time.Time 完成,所以这个部分可能优先级不高。
  • 由于 Go 语言本身与 Java 语言差异巨大,API 设计不可能照搬,已针对空值等不可避免的问题进行针对性处理,但目前仍然不排除后续调整部分具体 API 设计的情况,比如调整参数个数等。空值处理等核心设计不太可能变化。
  • 核心类型已全部支持 Go 1.24 json 库支持的 IsZero() 判定,可放心使用 omitzero 标记。

目前主要功能部分还剩下 Period Duration 以及时区相关等尚未完成,后续会尽量补全。

项目地址: https://github.com/iseki0/goda

  • Go
  • 时间库
  • 类型安全

    40 条回复    2025-11-20 01:16:47 +08:00

    user1284

    1

    user1284      2025 年 11 月 12 日

    别从 js 里抄就好

    jjx

    2

    jjx      2025 年 11 月 12 日   ❤️ 2

    大部分代码使用 AI 完成

    以后还是要小心点了 个人看法

    sunmoon1983

    5

    sunmoon1983      2025 年 11 月 12 日

    感觉 carbon 和 gtime 都可以呀

    apkapb

    6

    apkapb      2025 年 11 月 12 日

    我怎么觉得做为自带的标准库已经够好用了,什么 Time{},Date(),以及 Duration ,完全够用了。

    反倒是 Java 里面的,特别是结合 Android ,写得我难受死了

    zoharSoul

    7

    zoharSoul      2025 年 11 月 12 日

    很棒, 是不是支持 yyyy-MM-dd 这种表示法?

    iseki

    10

    iseki      2025 年 11 月 12 日 via Android
    iseki

    11

    iseki      2025 年 11 月 12 日 via Android

    @zoharSoul 暂时不提供自定义格式化功能,只提供标准格式,这个包主要用于运算和类型安全。考虑到 Go 的使用场景,在经典后端下,使用自定义格式化功能的地方,不多。

    iseki

    12

    iseki      2025 年 11 月 12 日 via Android

    @sunmoon1983 和 carbon gtime 设计思路不同,他们都没有采用 310 建模。这两个库和 time.Time 在类型上没有区别。

    iseki

    13

    iseki      2025 年 11 月 12 日 via Android

    @apkapb 那可能你不需要更严格的类型吧,JSR-310 把 r 日期时间划分了近 10 种类型,以应对不同场景。

    oom

    14

    oom      2025 年 11 月 12 日

    6 ,star 了

    wangtian2020

    16

    wangtian2020      2025 年 11 月 12 日

    看到前几个 go 帖子我就想说了,go 连 dayjs 抄都抄不像,js 几 kb 就能实现的事儿

    encounter2017

    17

    encounter2017      2025 年 11 月 12 日

    不支持 format 好,要不然又会有 2006-01-02 15:04:05 手动狗头

    iseki

    18

    iseki      2025 年 11 月 12 日 via Android
    Ketteiron

    19

    Ketteiron      2025 年 11 月 12 日

    @iseki #10 Date/Time/DateTime 都有。
    只是性能不太行,功能也少。

    iseki

    20

    iseki      2025 年 11 月 12 日

    @Ketteiron 确实,我没看见另外两个类型,疏忽了。总之我还是照着 JSR-310 抄吧。

    iseki

    24

    iseki      2025 年 11 月 12 日 via Android

    提醒一下本 lib 是按照 Java 的语言提案 310 号编写的,该提案对应的功能已经在 Java8 时进入
    Java 标准库 java.time 。
    和 JavaScript 没有任何关系。

    NewYear

    25

    NewYear      2025 年 11 月 12 日

    我们可以在 2026 年 0 月 1 日相聚……

    iseki

    27

    iseki      2025 年 11 月 12 日

    @NewYear 我这有 guard ,这个事我还特别关注过啊
    if month < January || month > December {
    e = newError("month %d out of range", month)

    iseki

    34

    iseki      2025 年 11 月 13 日

    @RedisMasterNode civil 这个可以考虑,但是和 carbon 那种思路并不相同。所以选择干脆按照 JSR-310 开新的项目,一些取舍也不必纠结,比如隔壁贴讨论的 MinusMonth 语义什么的。

    zhady009

    35

    zhady009      2025 年 11 月 14 日   ❤️ 1

    @RedisMasterNode 其实差挺多的,Go 标准库里的表达歧义 JDK 在类型上就给你表达清楚了,历法也没有 JDK 的好使。主要问题还是 API 表达能力差会有歧义,你说能用就行那就这样吧

    iseki

    36

    iseki      2025 年 11 月 14 日 via Android

    另外就是 Go 标准库有个很扭曲的设计,我倾向于是设计者忘了这件事。Weekday 中 0=Sunday ,而 Month 则是 0=无效值

    iseki

    38

    iseki      2025 年 11 月 16 日 via Android

    @lysShub 因为 Go 必须考虑零值。因为 Go 的 struct 默认填充 0 。

    iseki

    40

    iseki      2025 年 11 月 20 日 via Android

    目前 Temporal LocalDate LocalTime LocalDateTime 已完成,数据库支持已测试 PostgreSQL/MySQL 。
    下一步将补充 ZonedDateTime 和 Duration 。