carbon/README.md

203 lines
7.1 KiB
Markdown
Raw Normal View History

2020-09-07 17:47:49 +08:00
carbon 是一个轻量级、语义化、对IDE友好的日期时间处理库是PHP Carbon库的Golang实现版本
2020-09-07 17:10:33 +08:00
2020-09-07 17:12:49 +08:00
github:[github.com/golang-module/carbon](https://github.com/golang-module/carbon "github.com/golang-module/carbon")
2020-09-07 17:16:34 +08:00
2020-09-07 17:10:33 +08:00
gitee:[gitee.com/go-package/carbon](https://gitee.com/go-package/carbon "gitee.com/go-package/carbon")
#### 安装
2020-09-07 17:47:49 +08:00
```go
2020-09-08 09:59:10 +08:00
go get -u gitee.com/go-package/carbon
2020-09-07 17:47:49 +08:00
```
2020-09-07 17:10:33 +08:00
#### 用法
###### 初始化
```go
import (
"gitee.com/go-package/carbon"
)
// 初始化
2020-09-08 09:31:50 +08:00
carbon := carbon:New()
2020-09-07 17:10:33 +08:00
```
###### 设置时区不设置默认为Local即服务器所在时区
```go
// 设置中国时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.PRC)
2020-09-07 17:10:33 +08:00
// 设置上海时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.Shanghai)
2020-09-07 17:10:33 +08:00
// 设置重庆时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.Chongqing)
2020-09-07 17:10:33 +08:00
// 设置香港时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.HongKong)
2020-09-07 17:10:33 +08:00
// 设置澳门时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.Macao)
2020-09-07 17:10:33 +08:00
// 设置台湾时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.Taipei)
2020-09-07 17:10:33 +08:00
// 设置日本时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.Japan)
2020-09-07 17:10:33 +08:00
// 设置东京时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.Tokyo)
2020-09-07 17:10:33 +08:00
// 设置纽约时区
2020-09-07 20:39:19 +08:00
carbon.Timezone(carbon.NewYork)
2020-09-07 17:10:33 +08:00
```
###### 获取当前时间
```go
2020-09-08 09:57:51 +08:00
carbon.Now().Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
carbon.Now().Format("y-m-d h:i:s") // 20-09-08 01:00:00
carbon.Now().Format("Y/m/d") // 2020/09/08
carbon.Now().ToDateTimeString() // 2020-09-08 13:00:00
carbon.Now().ToDateString() // 2020-09-08
carbon.Now().ToTimeString() // 13:00:00
2020-09-07 17:10:33 +08:00
// 获取当前时间戳
carbon.Now().ToTimestamp() // 1599272433
```
###### 获取昨天、今天、明天时间
```go
2020-09-08 09:57:51 +08:00
carbon.Yesterday() // 2020-09-07 00:00:00
carbon.Today() // 2020-09-08 00:00:00
carbon.Tomorrow() // 2020-09-09 00:00:00
2020-09-07 17:10:33 +08:00
```
2020-09-08 10:07:13 +08:00
###### 数字转标准时间字符串
2020-09-07 17:10:33 +08:00
```go
// 时间戳 转成 标准时间字符串
2020-09-08 09:57:51 +08:00
carbon.CreateFromTimestamp(1599272433).Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
2020-09-07 17:10:33 +08:00
// 年月日时分秒 转成 标准时间字符串
2020-09-08 09:57:51 +08:00
carbon.CreateFromDateTime(2020, 09, 08, 13, 00, 00).Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
2020-09-07 17:10:33 +08:00
// 年月日 转成 标准时间字符串
2020-09-08 09:57:51 +08:00
carbon.CreateFromDate(2020, 09, 08).Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
2020-09-07 17:10:33 +08:00
// 时分秒 转成 标准时间字符串(年月日默认为当前年月日)
2020-09-08 09:57:51 +08:00
carbon.CreateFromTime(13, 14, 15).Format("Y-m-d H:i:s") // 2020-09-08 13:14:15
2020-09-07 17:10:33 +08:00
```
2020-09-08 10:07:13 +08:00
###### 解析标准时间字符串
2020-09-07 17:10:33 +08:00
```go
2020-09-08 09:57:51 +08:00
carbon.Parse("2020-09-08 13:00:00").Format("YmdHis") // 20200908130000
carbon.Parse("2020-09-08 13:00:00").Format("Y-m-d") // 2020-09-08
carbon.Parse("2020-09-08").Format("Y/m/d H:i:s") // 2020/09/08 00:00:00
carbon.Parse("2020-09-08").Format("Y/m/d") // 2020/09/08
carbon.Parse("2020-09-08 13:00:00").ToDateTimeString() // 2020-09-05 13:00:00
carbon.Parse("2020-09-08 13:00:00").ToDateString() // 2020-09-08
carbon.Parse("2020-09-08 13:00:00").ToTimeString() // 13:00:00
carbon.Parse("2020-09-08 13:00:00").ToTimestamp() // 1599272433
carbon.Parse("2020/09/08 13:00:00").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
carbon.Parse("2020/09/08 13:00:00").Format("Y-m-d") // 2020-09-08
carbon.Parse("2020/09/08").Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
carbon.Parse("2020/09/08").Format("Y-m-d") // 2020-09-08
carbon.Parse("2020/09/08 13:00:00").ToDateTimeString() // 2020-09-05 13:00:00
carbon.Parse("2020/09/08 13:00:00").ToDateString() // 2020-09-08
carbon.Parse("2020/09/08 13:00:00").ToTimeString() // 10:20:30
carbon.Parse("2020/09/08 13:00:00").ToTimestamp() // 1599272433
carbon.Parse("20200908130000").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
carbon.Parse("20200908130000").Format("Y-m-d") // 2020-09-08
carbon.Parse("20200908").Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
carbon.Parse("20200908").Format("Y/m/d") // 2020/09/08
carbon.Parse("20200908130000").ToDateTimeString() // 2020-09-05 13:00:00
carbon.Parse("20200908130000").ToDateString() // 2020-09-08
carbon.Parse("20200908130000").ToTimeString() // 13:00:00
carbon.Parse("20200908130000").ToTimestamp() // 1599272433
2020-09-07 17:10:33 +08:00
```
###### 解析自定义格式时间字符串
```go
2020-09-08 09:57:51 +08:00
carbon.ParseByCustom("2020|09|08 13:00:00", "Y|m|d H:i:s").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
carbon.ParseByCustom("2020%09%08% 01%00%00", "Y年m月d日 h%i%s").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
carbon.ParseByCustom("2020年09月08日 13:00:00", "Y年m月d日 H:i:s").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
carbon.ParseByCustom("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToDateTimeString() // 2020-09-08 13:20:30
carbon.ParseByCustom("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToDateString() // 2020-09-08
carbon.ParseByCustom("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToTimeString() // 13:00:00
carbon.ParseByCustom("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToTimestamp() // 1599272433
2020-09-07 17:10:33 +08:00
```
2020-09-08 09:57:51 +08:00
###### 时间旅行
> 假设当前北京时间为2020-09-08 13:00:00
2020-09-07 17:10:33 +08:00
```go
2020-09-08 10:06:17 +08:00
// 三年后2023-09-08 13:00:00
carbon.Now().AddYears(3).ToDateTimeString()
// 一年后2021-09-08 13:00:00
carbon.Now().AddYear().ToDateTimeString()
// 三年前2017-09-08 13:00:00
carbon.Now().SubYears(3).ToDateTimeString()
// 一年前2019-09-08 13:00:00
carbon.Now().SubYear().ToDateTimeString()
// 三月后2020-12-08 13:00:00
carbon.Now().AddMonths(3).ToDateTimeString()
// 一月后2020-10-08 13:00:00
carbon.Now().AddMonth().ToDateTimeString()
// 三月前2020-06-08 13:00:00
carbon.Now().SubMonths(3).ToDateTimeString()
// 一月前2020-08-08 13:00:00
carbon.Now().SubMonth().ToDateTimeString()
// 三天后2020-09-11 13:00:00
carbon.Now().AddDays(3).ToDateTimeString()
// 一天后2020-09-09 13:00:00
carbon.Now().AddDay().ToDateTimeString()
// 三天前2020-09-05 13:00:00
carbon.Now().SubDays(3).ToDateTimeString()
// 一天前2020-08-07 13:00:00
carbon.Now().SubDay().ToDateTimeString()
// 三小时后2020-09-08 16:00:00
carbon.Now().AddHours(3).ToDateTimeString()
// 一小时后2020-09-08 14:00:00
carbon.Now().AddHoury().ToDateTimeString()
// 三小时前2020-09-08 10:00:00
carbon.Now().SubHours(3).ToDateTimeString()
// 一小时前2020-09-08 12:00:00
carbon.Now().SubHour().ToDateTimeString()
// 三分钟后2020-09-08 13:03:00
carbon.Now().AddMinutes(3).ToDateTimeString()
// 一分钟后2020-09-08 13:01:00
carbon.Now().AddMinute().ToDateTimeString()
// 三分钟前2020-09-08 12:57:00
carbon.Now().SubMinutes(3).ToDateTimeString()
// 一分钟前2020-09-08 12:59:00
carbon.Now().SubMinute().ToDateTimeString()
// 三秒钟后2020-09-08 13:00:03
carbon.Now().AddSeconds(3).ToDateTimeString()
// 一秒钟后2020-09-08 13:00:01
carbon.Now().AddSecond().ToDateTimeString()
// 三秒钟前2020-09-08 12:59:57
carbon.Now().SubSeconds(3).ToDateTimeString()
// 一秒钟前2020-09-08 12:59:59
carbon.Now().SubSecond().ToDateTimeString()
2020-09-07 17:10:33 +08:00
```
###### 日期判断
```go
// 是否是闰年
2020-09-08 09:57:51 +08:00
carbon.Now().IsLeapYear() // true
2020-09-07 17:10:33 +08:00
// 是否是周一
2020-09-08 09:57:51 +08:00
carbon.Now().IsMonday() // false
2020-09-07 17:10:33 +08:00
// 是否是周二
2020-09-08 09:57:51 +08:00
carbon.Now().IsTuesday() // true
2020-09-07 17:10:33 +08:00
// 是否是周三
2020-09-08 09:57:51 +08:00
carbon.Now().IsWednesday() // false
2020-09-07 17:10:33 +08:00
// 是否是周四
2020-09-08 09:57:51 +08:00
carbon.Now().IsThursday() // false
2020-09-07 17:10:33 +08:00
// 是否是周五
2020-09-08 09:57:51 +08:00
carbon.Now().IsFriday() // false
2020-09-07 17:10:33 +08:00
// 是否是周六
2020-09-08 09:57:51 +08:00
carbon.Now().IsSaturday() // false
2020-09-07 17:10:33 +08:00
// 是否是周日
2020-09-08 09:57:51 +08:00
carbon.Now().IsSunday() // false
2020-09-07 17:10:33 +08:00
```