日期时间处理库 go-carbon

MIT
Google Go
跨平台
2020-09-07
够过瘾

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用和gorm、xorm等主流orm。

安装使用

// 使用github库
go get -u github.com/golang-module/carbon

import (
    "github.com/golang-module/carbon"
)

// 使用gitee库
go get -u gitee.com/go-package/carbon

import (
    "gitee.com/go-package/carbon"
)

用法示例

  • 设置时区
carbon.SetTimezone(carbon.PRC).Now().ToDateTimeString() // 2020-08-05 13:14:15
carbon.SetTimezone(carbon.Tokyo).Now().ToDateTimeString() // 2020-08-05 14:14:15
carbon.SetTimezone(carbon.Tokyo).SetTimezone(carbon.PRC).Now().ToDateTimeString() // 2020-08-05 13:14:15
  • 昨天、今天、明天
// 今天
carbon.Now().ToDateTimeString() // 2020-08-05 13:14:15
// 今天日期
carbon.Now().ToDateString() // 2020-08-05
// 今天时间
carbon.Now().ToTimeString() // 13:14:15
// 今天秒级时间戳
carbon.Now().ToTimestamp() // 1596604455
carbon.Now().ToTimestampWithSecond() // 1596604455
// 今天毫秒级时间戳
carbon.Now().ToTimestampWithMillisecond() // 1596604455000
// 今天微秒级时间戳
carbon.Now().ToTimestampWithMicrosecond() // 1596604455000000
// 今天纳秒级时间戳
carbon.Now().ToTimestampWithNanosecond() // 1596604455000000000

// 昨天
carbon.Yesterday().ToDateTimeString() // 2020-08-04 13:14:15
// 昨天日期
carbon.Yesterday().ToDateString() // 2020-08-04
// 昨天时间
carbon.Yesterday().ToTimeString() // 13:14:15
// 昨天秒级时间戳
carbon.Yesterday().ToTimestamp() // 1596518055
carbon.Yesterday().ToTimestampWithSecond() // 1596518055
// 明天毫秒级时间戳
carbon.Now().ToTimestampWithMillisecond() // 1596518055000
// 明天微秒级时间戳
carbon.Now().ToTimestampWithMicrosecond() // 1596518055000000
// 明天纳秒级时间戳
carbon.Now().ToTimestampWithNanosecond() // 1596518055000000000

// 明天
carbon.Tomorrow().ToDateTimeString() // 2020-08-06 13:14:15
// 明天日期
carbon.Tomorrow().ToDateString() // 2020-08-06
// 明天时间
carbon.Tomorrow().ToTimeString() // 13:14:15
// 明天秒级时间戳
carbon.Tomorrow().ToTimestamp() // 1596690855
carbon.Now().ToTimestampWithSecond() // 1596690855
// 明天毫秒级时间戳
carbon.Now().ToTimestampWithMillisecond() // 1596690855000
// 明天微秒级时间戳
carbon.Now().ToTimestampWithMicrosecond() // 1596690855000000
// 明天纳秒级时间戳
carbon.Now().ToTimestampWithNanosecond() // 1596690855000000000
  • 解析标准格式时间字符串
carbon.Parse("2020-08-05 13:14:15").ToDateTimeString() // 2020-08-05 13:14:15
carbon.Parse("20200805131415").ToDateTimeString() // 2020-08-05 13:14:15
carbon.Parse("2020-08-05").ToDateTimeString() // 2020-08-05 00:00:00
carbon.Parse("20200805").ToDateTimeString() // 2020-08-05 00:00:00
carbon.Parse("2020-08-05T13:14:15+08:00").ToDateTimeString() // 2020-08-05 00:00:00
  • 时间旅行
// 三年后
carbon.Parse("2020-02-29 13:14:15").AddYears(3).ToDateTimeString() // 2023-03-01 13:14:15
carbon.Parse("2020-02-29 13:14:15").NextYears(3).ToDateTimeString() // 2023-02-28 13:14:15

// 三年前
carbon.Parse("2020-02-29 13:14:15").SubYears(3).ToDateTimeString() // 2017-03-01 13:14:15
carbon.Parse("2020-02-29 13:14:15").PreYears(3).ToDateTimeString() // 2017-02-28 13:14:15

// 三月后
carbon.Parse("2020-02-29 13:14:15").AddMonths(3).ToDateTimeString() // 2020-05-29 13:14:15
carbon.Parse("2020-02-29 13:14:15").NextMonths(3).ToDateTimeString() // 2020-05-29 13:14:15

// 三月前
carbon.Parse("2020-02-29 13:14:15").SubMonths(3).ToDateTimeString() // 2019-11-29 13:14:15
carbon.Parse("2020-02-29 13:14:15").PreMonths(3).ToDateTimeString() // 2019-11-29 13:14:15

// 三天后
carbon.Parse("2020-08-05 13:14:15").AddDays(3).ToDateTimeString() // 2020-08-08 13:14:15
// 三天前
carbon.Parse("2020-08-05 13:14:15").SubDays(3).ToDateTimeString() // 2020-08-02 13:14:15

// 三小时后
carbon.Parse("2020-08-05 13:14:15").AddHours(3).ToDateTimeString() // 2020-08-05 16:14:15
// 二小时半后
carbon.Parse("2020-08-05 13:14:15").AddDuration("2.5h").ToDateTimeString() // 2020-08-05 15:44:15

// 三小时前
carbon.Parse("2020-08-05 13:14:15").SubHours(3).ToDateTimeString() // 2020-08-05 10:14:15
// 二小时半前
carbon.Parse("2020-08-05 13:14:15").SubDuration("2.5h").ToDateTimeString() // 2020-08-05 10:44:15

// 三分钟后
carbon.Parse("2020-08-05 13:14:15").AddMinutes(3).ToDateTimeString() // 2020-08-05 13:17:15
// 二分钟半后
carbon.Parse("2020-08-05 13:14:15").AddDuration("2.5m").ToDateTimeString() // 2020-08-05 13:16:45

// 三分钟前
carbon.Parse("2020-08-05 13:14:15").SubMinutes(3).ToDateTimeString() // 2020-08-05 13:11:15
// 二分钟半前
carbon.Parse("2020-08-05 13:14:15").SubDuration("2.5m").ToDateTimeString() // 2020-08-05 13:11:45

// 三秒钟后
carbon.Parse("2020-08-05 13:14:15").AddSeconds(3).ToDateTimeString() // 2020-08-05 13:14:18
// 二秒钟半后
carbon.Parse("2020-08-05 13:14:15").AddDuration("2.5s").ToDateTimeString() // 2020-08-05 13:14:17

// 三秒钟前
carbon.Parse("2020-08-05 13:14:15").SubSeconds(3).ToDateTimeString() // 2020-08-05 13:14:12
// 二秒钟半前
carbon.Parse("2020-08-05 13:14:15").SubDuration("2.5s").ToDateTimeString() // 2020-08-05 13:14:12
  • 数据库支持

假设数据表为users,字段有id(int)、name(varchar)、age(int)、graduated_at(datetime)、birthday(datetime)、created_at(datetime)、updated_at(datetime)、date_time1(datetime)、date_time2(datetime)、date_time3(datetime)、date_time4(datetime)

// 定义模型
type UserModel struct {
    ID  int64  `json:"id"`
    Name string `json:"name"`
    Age int `json:"age"`
    Birthday carbon.ToDateTimeString `json:"birthday"`
    GraduatedAt carbon.ToDateString `json:"graduated_at"`
    CreatedAt carbon.ToTimeString `json:"created_at"`
    UpdatedAt carbon.ToTimestamp `json:"updated_at"`
    DateTime1 carbon.ToTimestampWithSecond `json:"date_time1"`
    DateTime2 carbon.ToTimestampWithMillisecond `json:"date_time2"`
    DateTime3 carbon.ToTimestampWithMicrosecond `json:"date_time3"`
    DateTime4 carbon.ToTimestampWithNanosecond `json:"date_time4"`
}

// 实例化模型
user := UserModel {
    Name: "gouguoyin",
    Age: 18,
    Birthday: carbon.ToDateTimeString{carbon.Now().SubYears(18)},
    GraduatedAt: carbon.ToDateString{carbon.Parse("2012-09-09")},
    CreatedAt: carbon.ToTimeString{carbon.Now()},
    UpdatedAt: carbon.ToTimestamp{carbon.Now()},
    DateTime1: carbon.ToTimestampWithSecond{carbon.Now()},
    DateTime2: carbon.ToTimestampWithMillisecond{carbon.Now()},
    DateTime3: carbon.ToTimestampWithMicrosecond{carbon.Now()},
    DateTime4: carbon.ToTimestampWithNanosecond{carbon.Now()},
}

// 输出模型字段
user.ID // 42
user.Name // gouguoyin
user.Age // 18
user.Birthday.ToDateTimeString() // 2012-08-05 13:14:15
user.GraduatedAt.ToDateString() // 2012-09-09
user.CreatedAt.ToTimeString() // 13:14:15
user.UpdatedAt.ToTimestamp() // 1596604455
user.DateTime1.ToTimestampWithSecond() // 1596604455
user.DateTime2.ToTimestampWithMillisecond() // 1596604455000
user.DateTime3.ToTimestampWithMicrosecond() // 1596604455000000
user.DateTime4.ToTimestampWithNanosecond() // 1596604455000000000

// JSON输出模型
data, _ := json.Marshal(&user)
fmt.Print(string(data))
{
    "id": 42,
    "name": "gouguoyin",
    "age": 18,
    "birthday": "2012-08-05 13:14:15",
    "graduated_at": "2012-09-09",
    "created_at": "13:14:15",
    "updated_at": 1596604455,
    "date_time1": 1596604455,
    "date_time2": 1596604455000,
    "date_time3": 1596604455000000,
    "date_time4": 1596604455000000000,
}

更多用法请查看下方软件文档

加载中

评论(2)

0
007008
目测phper转go的
够过瘾
够过瘾 软件作者
欢迎大家提出宝贵意见
够过瘾
够过瘾 软件作者
#go-carbon# ,php carbon日期时间处理库的golang实现版本,支持gorm结构体

go-carbon 1.2.4 版本发布,新增系列时间比较方法

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee...

11/06 09:33

go-carbon 1.2.3 版本发布了,新增毫秒、微妙、纳秒级时间戳输出

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee...

11/02 10:45

go-carbon 1.2.2 版本发布了,新增时间设置和时间差比较功能

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee...

10/22 10:11

go-carbon 1.2.1 版本发布了,新增获取年龄等方法

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee...

10/16 09:38

go-carbon 1.2.0 版本发布了,完善优化对 ORM 的多场景支持

carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用和gorm、xrom等主流orm 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee:gitee...

10/12 10:07

go-carbon 1.1.2 版本发布了,修复已知错误,增加对农历的支持

carbon 是一个轻量级、语义化、对 IDE 友好的日期时间处理库,是 PHP Carbon 库的 Golang 实现版本,初衷是为了摆脱 Golang 反人类的 2006-01-02 15:04:05 格式化时间设计,支持链式调用和 ...

10/01 18:22

go-carbon 1.1.1 版本发布,完善对主流 ORM 的支持,新增公共方法

carbon 是一个轻量级、语义化、对IDE友好的日期时间处理库,是PHP Carbon库的Golang实现版本,初衷是为了摆脱Golang反人类的2006-01-02 15:04:05格式化时间设计,支持链式调用和gorm、xrom等...

09/14 10:55

go-carbon 1.1.0 版本发布了,增加对 gorm 的支持

carbon 是一个轻量级、语义化、对IDE友好的日期时间处理库,是PHP Carbon库的Golang实现版本,初衷是为了摆脱Golang反人类的2006-01-02 15:04:05格式化时间设计,支持链式调用和gorm结构体。...

09/10 10:12

go-carbon V1.0 正式版发布了,PHP Carbon 的 Golang 实现版本

carbon 是一个轻量级、语义化、对IDE友好的日期时间处理库,是 PHP Carbon 库的 Golang 实现版本,摆脱反人类的2006-01-02 15:04:05格式化时间设计 更新记录 【新增】新增IsLeapYear()方法判...

09/08 16:27

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

carbon进程

本文档对carbon里面几个进程的功能进行简要描述

2016/07/05 09:54
262
1
Carbon是什么?

Carbon

2016/06/22 15:23
71
0
laravel carbon

Laravel 中默认使用的时间处理类就是 Carbon。 <?php namespace Carbon; class Carbon extends \DateTime { // code here } 你可以在 Carbon 命名空间的 Carbon 类中看到上面声明...

2019/01/09 14:48
6
0
carbon配置

介绍graphite里面各种配置文件的作用和配置方法

2016/07/05 09:29
432
1
laravel Carbon函数

原文地址:https://blog.csdn.net/lbwo001/article/details/53063867 carbon官方网站:https://carbon.nesbot.com/docs/#api-settersfluent 快速切換前後日期 1 <?php 2 3 use Carbo...

2019/05/28 18:14
13
0
Carbon中文使用手册

篇幅较长 建议先码后看~~~~ Introduction Carbon 继承了PHP的 Datetime 类和JsonSerialiable。所以 Carbon 中没有涉及到的,但在 Datetime 和JsonSerializable中已经实现的方法都是可以使用的...

2018/07/27 14:19
29
0
PHP日期和时间处理组件-Carbon

https://packagist.org/packages/nesbot/carbon 我们使用PHP时经常需要处理日期和时间,有时会被时间时区搞混淆,而Carbon是PHP中很人性化的时间日期处理组件,它继承自 PHP的DateTime 类的 ...

2019/05/15 19:31
28
0
laravel中Carbon包的使用详解

介绍 Carbon是对PHP DateTime模块的二次扩展;提供时间格式化,时间计算的功能; 官方主页为 http://carbon.nesbot.com/; Github地址为 https://github.com/briannesbitt/Carbon; 文件结构 ...

2019/09/19 11:11
19
0
plate complete carbon dioxide linens linen

plate complete carbon dioxide linens linen

2014/06/20 19:59
12
0
carbon nanotubes 碳纳米管晶体管

今天抽时间回答了一下知乎提问“3nm之后,芯片制造何去何从”的问题。 后摩尔技术有很多选择,如三星正在推动的GAA和FinFET发明者胡正明教授正在推动的负电容晶体管都是当中的代表,碳纳米管...

06/12 20:58
8
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部