carbon/README.md
2020-09-09 09:37:41 +08:00

216 lines
7.5 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

carbon 是一个轻量级、语义化、对IDE友好的日期时间处理库是PHP Carbon库的Golang实现版本初衷是为了摆脱Golang反人类的2006-01-02 15:04:05格式化时间设计
github:[github.com/golang-module/carbon](https://github.com/golang-module/carbon "github.com/golang-module/carbon")
gitee:[gitee.com/go-package/carbon](https://gitee.com/go-package/carbon "gitee.com/go-package/carbon")
#### 安装
```go
go get -u gitee.com/go-package/carbon
```
#### 用法
###### 初始化
```go
import (
"gitee.com/go-package/carbon"
)
// 初始化
carbon := carbon.New()
```
###### 设置时区不设置默认为Local即服务器所在时区
```go
// 设置中国时区
carbon.Timezone(carbon.PRC)
// 设置上海时区
carbon.Timezone(carbon.Shanghai)
// 设置重庆时区
carbon.Timezone(carbon.Chongqing)
// 设置香港时区
carbon.Timezone(carbon.HongKong)
// 设置澳门时区
carbon.Timezone(carbon.Macao)
// 设置台湾时区
carbon.Timezone(carbon.Taipei)
// 设置日本时区
carbon.Timezone(carbon.Japan)
// 设置东京时区
carbon.Timezone(carbon.Tokyo)
// 设置纽约时区
carbon.Timezone(carbon.NewYork)
```
###### 获取当前时间
```go
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
// 获取当前时间戳
carbon.Now().ToTimestamp() // 1599272433
```
###### 获取昨天、今天、明天时间
```go
carbon.Yesterday() // 2020-09-07 00:00:00
carbon.Today() // 2020-09-08 00:00:00
carbon.Tomorrow() // 2020-09-09 00:00:00
```
###### 第一天、最后一天
```go
carbon.Now().FirstDay() // 2020-09-01 00:00:00
carbon.Now().LastDay() // 2020-09-30 00:00:00
```
###### 数字转标准时间字符串
```go
// 时间戳 转成 标准时间字符串
carbon.CreateFromTimestamp(1599272433).Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
// 年月日时分秒 转成 标准时间字符串
carbon.CreateFromDateTime(2020, 09, 08, 13, 00, 00).Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
// 年月日 转成 标准时间字符串
carbon.CreateFromDate(2020, 09, 08).Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
// 时分秒 转成 标准时间字符串(年月日默认为当前年月日)
carbon.CreateFromTime(13, 14, 15).Format("Y-m-d H:i:s") // 2020-09-08 13:14:15
```
###### 解析标准时间字符串
```go
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
```
###### 解析自定义格式时间字符串
```go
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-08 13:00:00
```go
// 三年后
carbon.Now().AddYears(3).ToDateTimeString() // 2023-09-08 13:00:00
// 一年后
carbon.Now().AddYear().ToDateTimeString() // 2021-09-08 13:00:00
// 三年前
carbon.Now().SubYears(3).ToDateTimeString() // 2017-09-08 13:00:00
// 一年前
carbon.Now().SubYear().ToDateTimeString() // 2019-09-08 13:00:00
// 三月后
carbon.Now().AddMonths(3).ToDateTimeString() // 2020-12-08 13:00:00
// 一月后
carbon.Now().AddMonth().ToDateTimeString() // 2020-10-08 13:00:00
// 三月前
carbon.Now().SubMonths(3).ToDateTimeString() // 2020-06-08 13:00:00
// 一月前
carbon.Now().SubMonth().ToDateTimeString() // 2020-08-08 13:00:00
// 三天后
carbon.Now().AddDays(3).ToDateTimeString() // 2020-09-11 13:00:00
// 一天后
carbon.Now().AddDay().ToDateTimeString() // 2020-09-09 13:00:00
// 三天前
carbon.Now().SubDays(3).ToDateTimeString() // 2020-09-05 13:00:00
// 一天前
carbon.Now().SubDay().ToDateTimeString() // 2020-08-07 13:00:00
// 三小时后
carbon.Now().AddHours(3).ToDateTimeString() // 2020-09-08 16:00:00
// 一小时后
carbon.Now().AddHoury().ToDateTimeString() // 2020-09-08 14:00:00
// 三小时前
carbon.Now().SubHours(3).ToDateTimeString() // 2020-09-08 10:00:00
// 一小时前
carbon.Now().SubHour().ToDateTimeString() // 2020-09-08 12:00:00
// 三分钟后
carbon.Now().AddMinutes(3).ToDateTimeString() // 2020-09-08 13:03:00
// 一分钟后
carbon.Now().AddMinute().ToDateTimeString() // 2020-09-08 13:01:00
// 三分钟前
carbon.Now().SubMinutes(3).ToDateTimeString() // 2020-09-08 12:57:00
// 一分钟前
carbon.Now().SubMinute().ToDateTimeString() // 2020-09-08 12:59:00
// 三秒钟后
carbon.Now().AddSeconds(3).ToDateTimeString() // 2020-09-08 13:00:03
// 一秒钟后
carbon.Now().AddSecond().ToDateTimeString() // 2020-09-08 13:00:01
// 三秒钟前
carbon.Now().SubSeconds(3).ToDateTimeString() // 2020-09-08 12:59:57
// 一秒钟前
carbon.Now().SubSecond().ToDateTimeString() // 2020-09-08 12:59:59
```
###### 日期判断
```go
// 是否是闰年
carbon.Now().IsLeapYear() // true
// 是否是周一
carbon.Now().IsMonday() // false
// 是否是周二
carbon.Now().IsTuesday() // true
// 是否是周三
carbon.Now().IsWednesday() // false
// 是否是周四
carbon.Now().IsThursday() // false
// 是否是周五
carbon.Now().IsFriday() // false
// 是否是周六
carbon.Now().IsSaturday() // false
// 是否是周日
carbon.Now().IsSunday() // false
```
**更新日志**
##### 2020-09-08
* 修复已知BUG
* 添加单元测试
* 新增FirstDay()方法获取第一天
* 新增FirstDay()方法获取最后一天