go-carbon v2.2.14 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
gouguoyin

go-carbon v2.2.14 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

  •  2
     
  •   gouguoyin
    kuafuRace Dec 1, 2023 2337 views
    This topic created in 878 days ago, the information mentioned may be changed or developed.

    carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。

    目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧

    github.com/golang-module/carbon

    gitee.com/golang-module/carbon

    安装使用

    Golang 版本大于等于 1.16
    // 使用 github 库 go get -u github.com/golang-module/carbon/v2 import "github.com/golang-module/carbon/v2" // 使用 gitee 库 go get -u gitee.com/golang-module/carbon/v2 import "gitee.com/golang-module/carbon/v2" 
    Golang 版本小于 1.16
    // 使用 github 库 go get -u github.com/golang-module/carbon import "github.com/golang-module/carbon" // 使用 gitee 库 go get -u gitee.com/golang-module/carbon import "gitee.com/golang-module/carbon" 
    更新日志
    • 修复 ToWeekString ToShortWeekString 方法忽略 SetWeekStartsAt 设置的 bug
    • 增加 Parse 方法更多解析格式的支持
    • timezone[len(timezone)-1] 更改为 timezone[0]
    • 提高 Fastest 方法的单元测试覆盖率
    • 修复文档拼写错误
    28 replies    2023-12-29 11:14:29 +08:00
    Masoud2023
        1
    Masoud2023  
       Dec 1, 2023   1
    这 api 做的真好看, 赞
    zyxk
        2
    zyxk  
       Dec 1, 2023   1
    很不错, 说明很清晰,虽然还没用过
    fgwmlhdkkkw
        3
    fgwmlhdkkkw  
       Dec 1, 2023
    Add(amount int, unit Unit)
    Sub(amounr int, unit Unit)
    pkoukk
        4
    pkoukk  
       Dec 1, 2023
    提一个小小的需求:希望有个 API 可以提供,指定 time 的这个月,有多少天。
    gouguoyin
        5
    gouguoyin  
    OP
       Dec 1, 2023
    @fgwmlhdkkkw 这样处理会面临溢出问题,有些方法是需要处理月份是否溢出问题,比如 `2023-01-31`,增加一个月,就需要考虑是否跨月。目前是分成两类方法,如 `AddMonths` 和 `AddMonthsNoOverflow`
    ```go
    carbon.Parse("2020-01-31 13:14:15").AddMonth().ToDateTimeString() // 2020-03-02 13:14:15

    carbon.Parse("2020-01-31 13:14:15").AddMonthNoOverflow().ToDateTimeString() // 2020-02-29 13:14:15
    ```
    gouguoyin
        6
    gouguoyin  
    OP
       Dec 1, 2023   1
    @pkoukk 已有,更多查看文档 https://github.com/golang-module/carbon#getter

    carbon.Parse("2020-02-01 13:14:15").DaysInMonth() // 29
    carbon.Parse("2020-04-01 13:14:15").DaysInMonth() // 30
    carbon.Parse("2020-08-01 13:14:15").DaysInMonth() // 31
    gouguoyin
        7
    gouguoyin  
    OP
       Dec 1, 2023
    @pkoukk 还有指定年有多少天的方法 DaysInYear
    pkoukk
        8
    pkoukk  
       Dec 1, 2023
    @gouguoyin #6 棒!
    sakuramanstein
        9
    sakuramanstein  
       Dec 1, 2023 via Android
    为啥叫 carbon ,最近需求时间处理有点多,正好看看
    RedisMasterNode
        10
    RedisMasterNode  
       Dc 1, 2023
    已 star 建议补充 benchmark
    lesismal
        11
    lesismal  
       Dec 1, 2023
    @sakuramanstein #9

    我猜是因为 “碳同位素定年法”
    fgwmlhdkkkw
        12
    fgwmlhdkkkw  
       Dec 1, 2023
    @gouguoyin #5 至少提供这样的通用接口,剩下的是用户的责任。
    CEBBCAT
        13
    CEBBCAT  
       Dec 1, 2023
    感谢分享,看到两边 go.mod 的 package 是不同的,是手动维护的吗?或者用脚本替换?
    ruolis
        14
    ruolis  
       Dec 1, 2023
    为啥我这样引入不了
    ruolis
        15
    ruolis  
       Dec 1, 2023
    手残按错了,补充下问题

    import "github.com/golang-module/carbon/v2"

    我的版本是:go version go1.18.10 darwin/arm64
    gouguoyin
        16
    gouguoyin  
    OP
       Dec 1, 2023
    @CEBBCAT 两边 go.mod 的 package 是不同的?那两边?
    gouguoyin
        17
    gouguoyin  
    OP
       Dec 1, 2023
    @RedisMasterNode 后面会补充的
    CEBBCAT
        19
    CEBBCAT  
       Dec 1, 2023
    @ruooooooli #15 我 go get github.com/golang-module/carbon/v2 可以的,你那边报什么错误?
    moell
        20
    moell  
       Dec 1, 2023   1
    @sakuramanstein PHP 有个 composer 包叫 carbon ,非常好用,API 参考了
    Rache1
        21
    Rache1  
       Dec 1, 2023
    @sakuramanstein #9 目测是 PHP 转 GO 的,Carbon 在 PHP 这边是一个很知名的包。

    大致看了一下 API ,几乎都一样了。

    原包下面提到来自:

    Radiocarbon dating - Wikipedia
    https://en.wikipedia.org/wiki/Radiocarbon_dating?useskin=vector
    ruolis
        22
    ruolis  
       Dec 1, 2023
    @CEBBCAT #19


    go get -u github.com/golang-module/carbon/v2
    cannot find package "github.com/golang-module/carbon/v2" in any of:
    /opt/homebrew/Cellar/[email protected]/1.18.10/libexec/src/github.com/golang-module/carbon/v2 (from $GOROOT)
    /Users/zk/Work/code/go/src/github.com/golang-module/carbon/v2 (from $GOPATH)

    难道是要开启 gomodule 么
    gouguoyin
        23
    gouguoyin  
    OP
       Dec 1, 2023
    @CEBBCAT 不同地址就是不同的包,但是 api 都一样,gitee 只是为了方便国内用户使用。
    gouguoyin
        24
    gouguoyin  
    OP
       Dec 1, 2023
    @ruooooooli 必须开启 go module
    ruolis
        25
    ruolis  
       Dec 1, 2023
    @gouguoyin #24 好的我试下
    gouguoyin
        26
    gouguoyin  
    OP
       Dec 1, 2023   1
    @ruooooooli go 从 1.11 后就开始使用 module 作为唯一包管理工具
    CEBBCAT
        27
    CEBBCAT  
       Dec 1, 2023
    @gouguoyin #23 明白
    gouguoyin
        28
    gouguoyin  
    OP
       Dec 29, 2023
    @RedisMasterNode v2.3.1 已加上 benchmark
    About     Help     Advertise     Blog     API     FAQ     Solana     5306 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 76ms UTC 03:53 PVG 11:53 LAX 20:53 JFK 23:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86