golang版carbon日期時間處理庫,PHP開發者的福利

gouguoyin發表於2020-09-07

carbon 是一個輕量級、語義化、對IDE友好的日期時間處理庫,是PHP Carbon庫的Golang實現版本,初衷是為了擺脫Golang反人類的2006-01-02 15:04:05格式化時間設計

github:github.com/golang-module/carbon

gitee:gitee.com/go-package/carbon

安裝

go get -u gitee.com/go-package/carbon

用法

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

// 初始化
carbon := carbon:New()
設定時區(不設定預設為Local,即伺服器所在時區)
// 設定中國時區
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)
獲取當前時間
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
獲取昨天、今天、明天時間
carbon.Yesterday() // 2020-09-07 00:00:00
carbon.Today() // 2020-09-08 00:00:00
carbon.Tomorrow() // 2020-09-09 00:00:00
第一天、最後一天
carbon.Now().FirstDay() // 2020-09-01 00:00:00
carbon.Now().LastDay() // 2020-09-30 00:00:00
數字轉標準時間字串
// 時間戳 轉成 標準時間字串
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
解析標準時間字串
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
解析自定義格式時間字串
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

// 三年後
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
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章