carbon

package module
v1.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2020 License: MIT Imports: 5 Imported by: 169

README

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

如果您觉得不错,请给个star吧

github:github.com/golang-module/carbon

gitee:gitee.com/go-package/carbon

安装

go get -u github.com/golang-module/carbon

初始化

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

// 初始化,默认时区为Local,即服务器所在时区
c := carbon.New()
// 初始化并设置时区
c := carbon.New().Timezone(carbon.PRC)

更多时区常量请查看const.go文件

通用用法

假设当前北京时间为2020-09-08 13:00:01

获取当前时间
c.Now().Format("Y-m-d H:i:s") // 2020-09-08 13:00:01
c.Now().Format("y-m-d h:i:s") // 20-09-08 01:00:01
c.Now().Format("Y/m/d") // 2020/09/08
c.Now().ToDateString() // 2020-09-08
c.Now().ToDateTimeString() // 2020-09-08 13:00:01
c.Now().ToDateStartString() // 2020-09-08 00:00:00
c.Now().ToDateEndString() // 2020-09-08 23:59:59
c.Now().ToTimeString() // 13:00:01
c.Now().ToTimeStartString() // 13:00:00
c.Now().ToTimeEndString() // 13:59:59
获取当前时间戳
c.Now().ToTimestamp() // 1599272433
获取昨天、今天、明天
c.Yesterday() // 2020-09-07
c.Today() // 2020-09-08
c.Tomorrow() // 2020-09-09

c.StartOfYesterday() // 2020-09-07 00:00:00
c.EndOfYesterday() // 2020-09-07 23:59:59
c.StartOfToday() // 2020-09-08 00:00:00
c.EndOfToday() // 2020-09-08 23:59:59
c.StartOfTomorrow() // 2020-09-09 00:00:00
c.EndOfTomorrow() // 2020-09-09 23:59:59
获取开始时间、结束时间
// 当前年的开始
c.Now().StartOfYear() // 2020-01-01 00:00:00
// 当前年的结束
c.Now().EndOfYear() // 2020-12-31 23:59:59
// 当前月的开始
c.Now().StartOfMonth() // 2020-09-01 00:00:00
// 当前月的结束
c.Now().EndOfMonth() // 2020-09-30 23:59:59
// 当前天的开始
c.Now().StartOfDay() // 2020-09-08 00:00:00
// 当前天的结束
c.Now().EndOfDay() // 2020-09-08 23:59:59
获取第一天、最后一天
// 当前年的第一天
c.Now().FirstOfYear() // 2020-01-01 00:00:00
// 当前年的最后一天
c.Now().LastOfYear() // 2020-12-31 00:00:00
// 当前月的第一天
c.Now().FirstOfMonth() // 2020-09-01 00:00:00
// 当前月的最后一天
c.Now().LastOfMonth() // 2020-09-30 00:00:00
数字转标准时间字符串
// 时间戳 转成 标准时间字符串
c.CreateFromTimestamp(1599272433).Format("Y-m-d H:i:s") // 2020-09-08 13:00:01
// 年月日时分秒 转成 标准时间字符串
c.CreateFromDateTime(2020, 09, 08, 13, 00, 01).Format("Y-m-d H:i:s") // 2020-09-08 13:00:01
// 年月日 转成 标准时间字符串
c.CreateFromDate(2020, 09, 08).Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
// 时分秒 转成 标准时间字符串(年月日默认为当前年月日)
c.CreateFromTime(13, 14, 15).Format("Y-m-d H:i:s") // 2020-09-08 13:14:15
解析标准格式时间字符串
c.Parse("2020-09-08 13:00:00").Format("YmdHis") // 20200908130000
c.Parse("2020-09-08 13:00:00").Format("Y-m-d") // 2020-09-08
c.Parse("2020-09-08").Format("Y/m/d H:i:s") // 2020/09/08 00:00:00
c.Parse("2020-09-08").Format("Y/m/d") // 2020/09/08
c.Parse("2020-09-08 13:00:00").ToDateTimeString() // 2020-09-05 13:00:00
c.Parse("2020-09-08 13:00:00").ToDateString() // 2020-09-08
c.Parse("2020-09-08 13:00:00").ToTimeString() // 13:00:00
c.Parse("2020-09-08 13:00:00").ToTimestamp() // 1599272433

c.Parse("2020/09/08 13:00:00").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
c.Parse("2020/09/08 13:00:00").Format("Y-m-d") // 2020-09-08
c.Parse("2020/09/08").Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
c.Parse("2020/09/08").Format("Y-m-d") // 2020-09-08
c.Parse("2020/09/08 13:00:00").ToDateTimeString() // 2020-09-05 13:00:00
c.Parse("2020/09/08 13:00:00").ToDateString() // 2020-09-08
c.Parse("2020/09/08 13:00:00").ToTimeString() // 10:20:30
c.Parse("2020/09/08 13:00:00").ToTimestamp() // 1599272433

c.Parse("20200908130000").Format("Y-m-d H:i:s") // 2020-09-08 13:00:00
c.Parse("20200908130000").Format("Y-m-d") // 2020-09-08
c.Parse("20200908").Format("Y-m-d H:i:s") // 2020-09-08 00:00:00
c.Parse("20200908").Format("Y/m/d") // 2020/09/08
c.Parse("20200908130000").ToDateTimeString() // 2020-09-05 13:00:00
c.Parse("20200908130000").ToDateString() // 2020-09-08
c.Parse("20200908130000").ToTimeString() // 13:00:00
c.Parse("20200908130000").ToTimestamp() // 1599272433
解析自定义格式时间字符串
c.ParseByFormat("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
c.ParseByFormat("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
c.ParseByFormat("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
c.ParseByFormat("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToDateTimeString() // 2020-09-08 13:20:30
c.ParseByFormat("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToDateString() // 2020-09-08
c.ParseByFormat("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToTimeString() // 13:00:00
c.ParseByFormat("2020年09月08日 13时00分00秒", "Y年m月d日 H时i分s秒").ToTimestamp() // 1599272433
解析相对时间字符串(相对于今天)
// 十小时后
c.ParseByDuration("10h").ToDateTimeString() // 2020-09-09 01:00:01
// 十小时前
c.ParseByDuration("-10h").Format("Y-m-d H:i:s") // 2020-09-08 03:00:01
// 十分钟后
c.ParseByDuration("10m").Format("Y-m-d H:i:s") // 2020-09-08 13:10:01
// 十分钟前
c.ParseByDuration("-10m").Format("Y-m-d H:i:s") // 2020-09-08 12:50:01
// 十秒后
c.ParseByDuration("10s").Format("Y-m-d H:i:s") // 2020-09-08 13:00:11
// 十秒前
c.ParseByDuration("-10s").Format("Y-m-d H:i:s") // 2020-09-08 12:59:51
时间旅行
// 三年后
c.Now().AddYears(3).ToDateTimeString() // 2023-09-08 13:00:01
// 一年后
c.Now().AddYear().ToDateTimeString() // 2021-09-08 13:00:01
// 三年前
c.Now().SubYears(3).ToDateTimeString() // 2017-09-08 13:00:01
// 一年前
c.Now().SubYear().ToDateTimeString() // 2019-09-08 13:00:01

// 三月后
c.Now().AddMonths(3).ToDateTimeString() // 2020-12-08 13:00:01
// 一月后
c.Now().AddMonth().ToDateTimeString() // 2020-10-08 13:00:01
// 三月前
c.Now().SubMonths(3).ToDateTimeString() // 2020-06-08 13:00:01
// 一月前
c.Now().SubMonth().ToDateTimeString() // 2020-08-08 13:00:01

// 三周后
c.Now().AddWeeks(3).ToDateTimeString() // 2020-09-29 13:00:01
// 一周后
c.Now().AddWeek().ToDateTimeString() // 2020-09-15 13:00:01
// 三周前
c.Now().SubWeeks(3).ToDateTimeString() // 2020-08-17 13:00:01
// 一周前
c.Now().SubWeek().ToDateTimeString() // 2020-09-01 13:00:01

// 三天后
c.Now().AddDays(3).ToDateTimeString() // 2020-09-11 13:00:01
// 一天后
c.Now().AddDay().ToDateTimeString() // 2020-09-09 13:00:01
// 三天前
c.Now().SubDays(3).ToDateTimeString() // 2020-09-05 13:00:01
// 一天前
c.Now().SubDay().ToDateTimeString() // 2020-08-07 13:00:01

// 三小时后
c.Now().AddHours(3).ToDateTimeString() // 2020-09-08 16:00:01
// 一小时后
c.Now().AddHoury().ToDateTimeString() // 2020-09-08 14:00:01
// 三小时前
c.Now().SubHours(3).ToDateTimeString() // 2020-09-08 10:00:01
// 一小时前
c.Now().SubHour().ToDateTimeString() // 2020-09-08 12:00:01

// 三分钟后
c.Now().AddMinutes(3).ToDateTimeString() // 2020-09-08 13:03:01
// 一分钟后
c.Now().AddMinute().ToDateTimeString() // 2020-09-08 13:01:01
// 三分钟前
c.Now().SubMinutes(3).ToDateTimeString() // 2020-09-08 12:57:01
// 一分钟前
c.Now().SubMinute().ToDateTimeString() // 2020-09-08 12:59:01

// 三秒钟后
c.Now().AddSeconds(3).ToDateTimeString() // 2020-09-08 13:00:04
// 一秒钟后
c.Now().AddSecond().ToDateTimeString() // 2020-09-08 13:00:02
// 三秒钟前
c.Now().SubSeconds(3).ToDateTimeString() // 2020-09-08 12:59:56
// 一秒钟前
c.Now().SubSecond().ToDateTimeString() // 2020-09-08 13:00:00

时间判断
// 是否是闰年
c.Now().IsLeapYear() // true

// 是否是一月
c.Now().IsJanuary() // false
// 是否是二月
c.Now().IsFebruary() // false
// 是否是三月
c.Now().IsMarch() // false
// 是否是四月
c.Now().IsApril()  // false
// 是否是五月
c.Now().IsMay() // false
// 是否是六月
c.Now().IsJune() // false
// 是否是七月
c.Now().IsJuly() // false
// 是否是八月
c.Now().IsAugust() // false
// 是否是九月
c.Now().IsSeptember() // true
// 是否是十月
c.Now().IsOctober() // false
// 是否是十一月
c.Now().IsNovember() // false
// 是否是十二月
c.Now().IsDecember() // false

// 是否是周一
c.Now().IsMonday() // false
// 是否是周二
c.Now().IsTuesday() // true
// 是否是周三
c.Now().IsWednesday() // false
// 是否是周四
c.Now().IsThursday()  // false
// 是否是周五
c.Now().IsFriday() // false
// 是否是周六
c.Now().IsSaturday() // false
// 是否是周日
c.Now().IsSunday() // false

// 是否是今天
c.Now().IsToday() // true
// 是否是昨天
c.Now().IsYesterday() // false
// 是否是明天
c.Now().IsTomorrow() // false
// 是否是今天开始时间
c.Now().IsStartOfToday() // false
// 是否是今天结束时间
c.Now().IsEndOfToday // false
// 是否是明天开始时间
c.Now().IsStartOfTomorrow() // false
// 是否是明天结束时间
c.Now().IsEndOfTomorrow() // false
// 是否是昨天开始时间
c.Now().IsStartOfYesterday() // false
// 是否是昨天结束时间
c.Now().IsEndOfYesterday() // false

// 是否是年初
c.Now().IsFirstOfYear() // false
//是否是年末
c.Now().IsLastOfYear() // false
// 是否是月初
c.Now().IsFirstOfMonth() // false
//是否是月末
c.Now().IsLastOfMonth() // false
农历支持
// 获取生肖年
c.Now().ToAnimalYear() // 鼠
// 获取农历年
c.Now().ToLunarYear() // 庚子

// 是否是鼠年
c.Now().IsYearOfRat() // true
// 是否是牛年
c.Now().IsYearOfOx() // false
// 是否是虎年
c.Now().IsYearOfTiger() // false
// 是否是兔年
c.Now().IsYearOfRabbit() // false
// 是否是龙年
c.Now().IsYearOfDragon() // false
// 是否是蛇年
c.Now().IsYearOfSnake() // false
// 是否是马年
c.Now().IsYearOfHorse() // false
// 是否是羊年
c.Now().IsYearOfGoat() // false
// 是否是猴年
c.Now().IsYearOfMonkey() // false
// 是否是鸡年
c.Now().IsYearOfRooster() // false
// 是否是狗年
c.Now().IsYearOfDog() // false
// 是否是猪年
c.Now().IsYearOfPig() // false

特殊用法

假设数据表为users,字段有id(int)、name(varchar)、age(int)、birthday(date)、created_at(datetime)、updated_at(datetime)、deleted_at(datetime)

在gorm中的应用

gorm.Open时必须包括parseTime=True参数

// 用法一,使用carbon.GormModel自动维护id、created_at、updated_at、deleted_at
type User struct {
	carbon.GormModel
	Name string `json:"name"`
	Age int `json:"age"`
	Birthday carbon.ToDateTimeString `json:"birthday"`
}
user := User {
    Name: "勾国印"
    Age: 18
    Birthday: "2012-09-09 00:00:00"
}
// json.Marshal(user)输出
{
    "id": 1, 
    "name": "勾国印", 
    "age": 18, 
    "birthday": "2012-09-09 00:00:00", 
    "created_at": "2020-09-09 12:13:14", 
    "updated_at": "2020-09-09 12:13:14", 
    "deleted_at": null
}

// 用法二,不使用carbon.GormModel
type User struct {
	Name string `json:"name"`
	Age int `json:"age"`
	Birthday carbon.ToDateString `json:"birthday"`
	CreatedAt carbon.ToDateTimeString `json:"created_at"`
	UpdatedAt carbon.ToTimeString `json:"updated_at"`
	DeletedAt carbon.ToTimestamp `json:"deleted_at"`
}
user := User {
    Name: "勾国印"
    Age: 18
    Birthday: "2012-09-09 00:00:00"
}
// json.Marshal(user)输出
{
    "id": 1, 
    "name": "勾国印", 
    "age": 18, 
    "birthday": "2012-09-09", 
    "created_at": "2020-09-09 12:13:14", 
    "updated_at": "12:13:14", 
    "deleted_at": 1599272433
}

在xorm中的应用

xorm.NewEngine时必须包括parseTime=True参数

// 用法一,使用carbon.XormModel自动维护id、created_at、updated_at、deleted_at
type User struct {
	carbon.XormModel
	Name string `json:"name"`
	Age int `json:"age"`
	Birthday carbon.ToDateTimeString `json:"birthday"`
}
user := User {
    Name: "勾国印"
    Age: 18
    Birthday: "2012-09-09 00:00:00"
}
// json.Marshal(user)输出
{
    "id": 1, 
    "name": "勾国印", 
    "age": 18, 
    "birthday": "2012-09-09 00:00:00", 
    "created_at": "2020-09-09 12:13:14", 
    "updated_at": "2020-09-09 12:13:14", 
    "deleted_at": null
}

// 用法二,不使用carbon.XormModel
type User struct {
	Name string `json:"name"`
	Age int `json:"age"`
	Birthday carbon.ToDateString `json:"birthday"`
	CreatedAt carbon.ToDateTimeString `json:"created_at"`
	UpdatedAt carbon.ToTimeString `json:"updated_at"`
	DeletedAt carbon.ToTimestamp `json:"deleted_at"`
}
user := User {
    Name: "勾国印"
    Age: 18
    Birthday: "2012-09-09 00:00:00"
}
// json.Marshal(user)输出
{
    "id": 1, 
    "name": "勾国印", 
    "age": 18, 
    "birthday": "2012-09-09", 
    "created_at": "2020-09-09 12:13:14", 
    "updated_at": "12:13:14", 
    "deleted_at": 1599272433
}

更新日志

2020-10-01

  • 完善单元测试
  • 修复 AddHours() 传入参数小于1天时变成浮点数的BUG
  • 修复 AddHour() 浮点数BUG
  • 修复 SubHours() 传入参数小于1天时变成浮点数的BUG
  • 修复 SubHour() 浮点数BUG
  • 修复 AddMinutes() 传入参数小于1天时变成浮点数的BUG
  • 修复 AddMinute() 浮点数BUG
  • 修复 SubMinutes() 传入参数小于1天时变成浮点数的BUG
  • 修复 SubMinute() 浮点数BUG
  • 修复 AddSeconds() 传入参数小于1天时变成浮点数的BUG
  • 修复 AddSecond() 浮点数BUG
  • 修复 SubSeconds() 传入参数小于1天时变成浮点数的BUG
  • 修复 SubSecond() 浮点数BUG
  • 修复orm中时间字段类型设置为carbon.ToDateTimeString时报错的BUG
  • 改名解析自定义时间格式方法ParseByCustom() 为 ParseByFormat()
  • 新增 ParseByDuration() 方法将持续时间字符串转化成时间实例
  • 新增 ToAnimalYear() 方法获取生肖年
  • 新增 ToLunarYear() 方法获取农历年
  • 新增 IsYearOfRat() 方法判断是否是鼠年
  • 新增 IsYearOfOx() 方法判断是否是牛年
  • 新增 IsYearOfTiger() 方法判断是否是虎年
  • 新增 IsYearOfRabbit() 方法判断是否是兔年
  • 新增 IsYearOfDragon() 方法判断是否是龙年
  • 新增 IsYearOfSnake() 方法判断是否是蛇年
  • 新增 IsYearOfHorse() 方法判断是否是马年
  • 新增 IsYearOfGoat() 方法判断是否是羊年
  • 新增 IsYearOfMonkey() 方法判断是否是猴年
  • 新增 IsYearOfRooster() 方法判断是否是鸡年
  • 新增 IsYearOfDog() 方法判断是否是狗年
  • 新增 IsYearOfPig() 方法判断是否是猪年

2020-09-14

  • 完善单元测试
  • 时区常量移到const.go文件里
  • 新增StartOfYear()方法获取当年开始时间
  • 新增EndOfYear()方法获取当年结束时间
  • 新增StartOfMonth()方法获取当月开始时间
  • 新增EndOfMonth()方法获取当月结束时间
  • 新增StartOfDay()方法获取当天开始时间
  • 新增EndOfDay()方法获取当天结束时间
  • 新增StartOfYesterday()方法获取昨天开始时间
  • 新增EndOfYesterday()方法获取昨天结束时间
  • 新增StartOfToday()方法获取今天开始时间
  • 新增EndOfToday()方法获取今天结束时间
  • 新增StartOfTomorrow()方法获取明天开始时间
  • 新增EndOfTomorrow方法获取明天结束时间
  • 新增ToDateStartString方法转换成日期开始时间
  • 新增ToDateEndString方法转换成日期结束时间
  • 新增ToTimeStartString方法转换成小时开始时间
  • 新增ToTimeEndString方法转换成小时结束时间

2020-09-13

  • 私有方法提取到独立文件private.go里
  • 新增IsToday方法判断是否是今天
  • 新增IsYesterday方法判断是否是昨天
  • 新增IsTomorrow方法判断是否是明天
  • 新增IsStartOfToday方法判断是否是今天开始时间
  • 新增IsEndOfToday方法判断是否是今天结束时间
  • 新增IsStartOfTomorrow方法判断是否是明天开始时间
  • 新增IsEndOfTomorrow方法判断是否是明天结束时间
  • 新增IsStartOfYesterday方法判断是否是昨天开始时间
  • 新增IsEndOfYesterday方法判断是否是昨天结束时间

2020-09-12

  • 修复数据库中时间类型字段值为null或0000-00-00 00:00:00时,json格式化后为0001-01-01 00:00:00的BUG
  • 完善单元测试
  • 优化代码组织结构,精简代码
  • 新增对xorm结构体的json输出时间格式化支持,支持输出多种标准时间格式
  • 新增AddWeeks(N)方法获取N周后时间
  • 新增AddWeek()方法获取1周后时间
  • 新增SubWeeks(N)方法获取N周前时间
  • 新增SubWeek()方法获取1周前时间

2020-09-09

  • 修复readme.md错误描述
  • 完善单元测试
  • 新增对gorm结构体的json输出时间格式化支持,支持输出多种标准时间格式
  • 新增IsJanuary()方法判断是否是一月
  • 新增IsFebruary()方法判断是否是二月
  • 新增IsMarch()方法判断是否是三月
  • 新增IsApril()方法判断是否是四月
  • 新增IsMay()方法判断是否是五月
  • 新增IsJune()方法判断是否是六月
  • 新增IsJuly()方法判断是否是七月
  • 新增IsAugust()方法判断是否是八月
  • 新增IsSeptember()方法判断是否是九月
  • 新增IsOctober()方法判断是否是十月
  • 新增IsNovember()方法判断是否是十一月
  • 新增IsDecember()方法判断是否是十二月

2020-09-08

  • 修复已知BUG
  • 添加单元测试
  • 新增FirstOfYear()方法获取年初第一天
  • 新增LastOfYear()方法获取年末最后一天
  • 新增FirstOfMonth()方法获取月初第一天
  • 新增LastOfMonth()方法获取月末最后一天
  • 新增IsFirstOfYaer()方法判断是否年初第一天
  • 新增IsLastOfYear()方法判断是否年末最后一天
  • 新增IsFirstOfMonth()方法判断是否月初第一天
  • 新增IsLastOfMonth()方法判断是否月末最后一天

Documentation

Index

Constants

View Source
const (
	Local = "Local"
	CET   = "CET"
	EET   = "EET"
	EST   = "EST"
	GMT   = "GMT"
	UTC   = "UTC"
	UCT   = "UCT"
	MST   = "MST"

	Cuba      = "Cuba"
	Egypt     = "Egypt"
	Eire      = "Eire"
	Greenwich = "Greenwich"
	Iceland   = "Iceland"
	Iran      = "Iran"
	Israel    = "Israel"
	Jamaica   = "Jamaica"
	Japan     = "Japan"
	Libya     = "Libya"
	Poland    = "Poland"
	Portugal  = "Portugal"
	PRC       = "PRC"
	Singapore = "Singapore"
	Turkey    = "Turkey"
	Zulu      = "Zulu"

	Shanghai   = "Asia/Shanghai"
	Chongqing  = "Asia/Chongqing"
	HongKong   = "Asia/Hong_Kong"
	Macao      = "Asia/Macao"
	Taipei     = "Asia/Taipei"
	Tokyo      = "Asia/Tokyo"
	London     = "Europe/London"
	NewYork    = "America/New_York"
	LosAngeles = "America/Los_Angeles"
)

时区常量

View Source
const (
	January   = "January"   // 一月
	February  = "February"  // 二月
	March     = "March"     // 三月
	April     = "April"     // 四月
	May       = "May"       // 五月
	June      = "June"      // 六月
	July      = "July"      // 七月
	August    = "August"    // 八月
	September = "September" // 九月
	October   = "October"   // 十月
	November  = "November"  // 十一月
	December  = "December"  // 十二月
)

月份常量

View Source
const (
	Monday    = "Monday"    // 周一
	Tuesday   = "Tuesday"   // 周二
	Wednesday = "Wednesday" // 周三
	Thursday  = "Thursday"  // 周四
	Friday    = "Friday"    // 周五
	Saturday  = "Saturday"  // 周六
	Sunday    = "Sunday"    // 周日
)

星期常量

View Source
const (
	YearsPerMillennium         = 1000    // 每千年1000年
	YearsPerCentury            = 100     // 每世纪100年
	YearsPerDecade             = 10      // 每十年10年
	QuartersPerYear            = 4       // 每年4季度
	MonthsPerYear              = 12      // 每年12月
	MonthsPerQuarter           = 3       // 每季度3月
	WeeksPerYear               = 52      // 每年52周
	WeeksPerMonth              = 4       // 每月4周
	DaysPerLeapYear            = 366     // 每闰年366天
	DaysPerNormalYear          = 365     // 每常规年365天
	DaysPerWeek                = 7       // 每周7天
	HoursPerWeek               = 168     // 每周168小时
	HoursPerDay                = 24      // 每天24小时
	MinutesPerDay              = 1440    // 每天1440分钟
	MinutesPerHour             = 60      // 每小时60分钟
	SecondsPerWeek             = 691200  // 每周691200秒
	SecondsPerDay              = 86400   // 每天86400秒
	SecondsPerMinute           = 60      // 每分钟60秒
	MillisecondsPerSecond      = 1000    // 每秒1000毫秒
	MicrosecondsPerMillisecond = 1000    // 每毫秒1000微秒
	MicrosecondsPerSecond      = 1000000 // 每秒1000000微秒
)

Variables

View Source
var (
	// 十二生肖
	SymbolicAnimals = [12]string{"鼠", "鸡", "狗", "猪", "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊"}

	// 天干
	HeavenlyStems = [10]string{"庚", "辛", "壬", "癸", "甲", "乙", "丙", "丙", "戊", "己"}

	// 地支
	EarthlyBranches = [12]string{"申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未"}
)

Functions

This section is empty.

Types

type Carbon

type Carbon struct {
	Time time.Time
	// contains filtered or unexported fields
}

func New

func New() *Carbon

New 初始化,设置默认时区

func (*Carbon) AddDay

func (c *Carbon) AddDay() *Carbon

AddDay 1天后

func (*Carbon) AddDays

func (c *Carbon) AddDays(days int) *Carbon

AddDays N天后

func (*Carbon) AddHour

func (c *Carbon) AddHour() *Carbon

AddHour 1小时后

func (*Carbon) AddHours

func (c *Carbon) AddHours(hours int) *Carbon

AddHours N小时后

func (*Carbon) AddMinute

func (c *Carbon) AddMinute() *Carbon

AddMinute 1分钟后

func (*Carbon) AddMinutes

func (c *Carbon) AddMinutes(minutes int) *Carbon

AddMinutes N分钟后

func (*Carbon) AddMonth

func (c *Carbon) AddMonth() *Carbon

AddMonth 1月后

func (*Carbon) AddMonths

func (c *Carbon) AddMonths(months int) *Carbon

AddMonths N月后

func (*Carbon) AddSecond

func (c *Carbon) AddSecond() *Carbon

AddMinute 1秒钟后

func (*Carbon) AddSeconds

func (c *Carbon) AddSeconds(second int) *Carbon

AddSeconds N秒钟后

func (*Carbon) AddWeek

func (c *Carbon) AddWeek() *Carbon

AddWeek 1周后

func (*Carbon) AddWeeks

func (c *Carbon) AddWeeks(weeks int) *Carbon

AddWeeks N周后

func (*Carbon) AddYear

func (c *Carbon) AddYear() *Carbon

AddYear 1年后

func (*Carbon) AddYears

func (c *Carbon) AddYears(years int) *Carbon

AddYears N年后

func (*Carbon) CreateFromDate

func (c *Carbon) CreateFromDate(year int, month time.Month, day int) *Carbon

CreateFromDate 将年月日转成时间实例

func (*Carbon) CreateFromDateTime

func (c *Carbon) CreateFromDateTime(year int, month time.Month, day int, hour int, minute int, second int) *Carbon

CreateFromDateTime 将年月日时分秒转成时间实例

func (*Carbon) CreateFromTime

func (c *Carbon) CreateFromTime(hour int, minute int, second int) *Carbon

CreateFromTime 将时分秒转成时间实例

func (*Carbon) CreateFromTimestamp

func (c *Carbon) CreateFromTimestamp(timestamp int64) *Carbon

CreateFromTimestamp 将时间戳转成时间实例

func (*Carbon) EndOfDay

func (c *Carbon) EndOfDay() string

EndOfDay 当天结束时间

func (*Carbon) EndOfMonth

func (c *Carbon) EndOfMonth() string

EndOfMonth 当月结束时间

func (*Carbon) EndOfToday

func (c *Carbon) EndOfToday() string

EndOfToday 今天结束时间

func (*Carbon) EndOfTomorrow

func (c *Carbon) EndOfTomorrow() string

EndOfTomorrow 明天结束时间

func (*Carbon) EndOfYear

func (c *Carbon) EndOfYear() string

EndOfYear 当年结束时间

func (*Carbon) EndOfYesterday

func (c *Carbon) EndOfYesterday() string

EndOfYesterday 昨天结束时间

func (*Carbon) FirstOfMonth

func (c *Carbon) FirstOfMonth() string

FirstDayInMonth 当月第一天

func (*Carbon) FirstOfYear

func (c *Carbon) FirstOfYear() string

FirstDayInYear 当年第一天

func (*Carbon) Format

func (c *Carbon) Format(format string) string

Format 格式化时间

func (*Carbon) IsApril

func (c *Carbon) IsApril() bool

IsApril 是否是四月

func (*Carbon) IsAugust

func (c *Carbon) IsAugust() bool

IsAugust 是否是八月

func (*Carbon) IsDecember

func (c *Carbon) IsDecember() bool

IsDecember 是否是十二月

func (*Carbon) IsEndOfDay

func (c *Carbon) IsEndOfDay() bool

IsEndOfDay 是否当天结束时间

func (*Carbon) IsEndOfMonth

func (c *Carbon) IsEndOfMonth() bool

IsEndOfMonth 是否当月结束时间

func (*Carbon) IsEndOfToday

func (c *Carbon) IsEndOfToday() bool

IsEndOfToday 是否今天结束时间

func (*Carbon) IsEndOfTomorrow

func (c *Carbon) IsEndOfTomorrow() bool

IsEndOfTomorrow 是否明天结束时间

func (*Carbon) IsEndOfYear

func (c *Carbon) IsEndOfYear() bool

IsEndOfYear 是否当年结束时间

func (*Carbon) IsEndOfYesterday

func (c *Carbon) IsEndOfYesterday() bool

IsEndOfYesterday 是否昨天结束时间

func (*Carbon) IsFebruary

func (c *Carbon) IsFebruary() bool

IsMonday 是否是二月

func (*Carbon) IsFirstOfMonth

func (c *Carbon) IsFirstOfMonth() bool

IsFirstOfMonth 是否月初

func (*Carbon) IsFirstOfYear

func (c *Carbon) IsFirstOfYear() bool

IsFirstOfYear 是否年初

func (*Carbon) IsFriday

func (c *Carbon) IsFriday() bool

IsFriday 是否是周五

func (*Carbon) IsJanuary

func (c *Carbon) IsJanuary() bool

IsJanuary 是否是一月

func (*Carbon) IsJuly

func (c *Carbon) IsJuly() bool

IsJuly 是否是七月

func (*Carbon) IsJune

func (c *Carbon) IsJune() bool

IsJune 是否是六月

func (*Carbon) IsLastOfMonth

func (c *Carbon) IsLastOfMonth() bool

IsLastOfMonth 是否是月末

func (*Carbon) IsLastOfYear

func (c *Carbon) IsLastOfYear() bool

IsLastOfYear 是否是年末

func (*Carbon) IsLeapYear

func (c *Carbon) IsLeapYear() bool

IsLeapYear 是否是闰年

func (*Carbon) IsMarch

func (c *Carbon) IsMarch() bool

IsMarch 是否是三月

func (*Carbon) IsMay

func (c *Carbon) IsMay() bool

IsMay 是否是五月

func (*Carbon) IsMonday

func (c *Carbon) IsMonday() bool

IsMonday 是否是周一

func (*Carbon) IsNovember

func (c *Carbon) IsNovember() bool

IsNovember 是否是十一月

func (*Carbon) IsOctober

func (c *Carbon) IsOctober() bool

IsOctober 是否是十月

func (*Carbon) IsSaturday

func (c *Carbon) IsSaturday() bool

IsSaturday 是否是周六

func (*Carbon) IsSeptember

func (c *Carbon) IsSeptember() bool

IsSeptember 是否是九月

func (*Carbon) IsStartOfDay

func (c *Carbon) IsStartOfDay() bool

IsStartOfDay 是否当天开始时间

func (*Carbon) IsStartOfMonth

func (c *Carbon) IsStartOfMonth() bool

IsStartOfMonth 是否当月开始时间

func (*Carbon) IsStartOfToday

func (c *Carbon) IsStartOfToday() bool

IsStartOfToday 是否今天开始时间

func (*Carbon) IsStartOfTomorrow

func (c *Carbon) IsStartOfTomorrow() bool

IsStartOfTomorrow 是否明天开始时间

func (*Carbon) IsStartOfYear

func (c *Carbon) IsStartOfYear() bool

IsStartOfYear 是否当年开始时间

func (*Carbon) IsStartOfYesterday

func (c *Carbon) IsStartOfYesterday() bool

IsStartOfYesterday 是否昨天开始时间

func (*Carbon) IsSunday

func (c *Carbon) IsSunday() bool

IsSunday 是否是周日

func (*Carbon) IsThursday

func (c *Carbon) IsThursday() bool

IsThursday 是否是周四

func (*Carbon) IsToday

func (c *Carbon) IsToday() bool

IsToday 是否是今天

func (*Carbon) IsTomorrow

func (c *Carbon) IsTomorrow() bool

IsTomorrow 是否是明天

func (*Carbon) IsTuesday

func (c *Carbon) IsTuesday() bool

IsTuesday 是否是周二

func (*Carbon) IsWednesday

func (c *Carbon) IsWednesday() bool

IsWednesday 是否是周三

func (*Carbon) IsYearOfDog

func (c *Carbon) IsYearOfDog() bool

IsYearOfDog 是否是狗年

func (*Carbon) IsYearOfDragon

func (c *Carbon) IsYearOfDragon() bool

IsYearOfDragon 是否是龙年

func (*Carbon) IsYearOfGoat

func (c *Carbon) IsYearOfGoat() bool

IsYearOfGoat 是否是羊年

func (*Carbon) IsYearOfHorse

func (c *Carbon) IsYearOfHorse() bool

IsYearOfHorse 是否是马年

func (*Carbon) IsYearOfMonkey

func (c *Carbon) IsYearOfMonkey() bool

IsYearOfMonkey 是否是猴年

func (*Carbon) IsYearOfOx

func (c *Carbon) IsYearOfOx() bool

IsYearOfOx 是否是牛年

func (*Carbon) IsYearOfPig

func (c *Carbon) IsYearOfPig() bool

IsYearOfPig 是否是猪年

func (*Carbon) IsYearOfRabbit

func (c *Carbon) IsYearOfRabbit() bool

IsYearOfRabbit 是否是兔年

func (*Carbon) IsYearOfRat

func (c *Carbon) IsYearOfRat() bool

IsYearOfRat 是否是鼠年

func (*Carbon) IsYearOfRooster

func (c *Carbon) IsYearOfRooster() bool

IsYearOfRooster 是否是鸡年

func (*Carbon) IsYearOfSnake

func (c *Carbon) IsYearOfSnake() bool

IsYearOfSnake 是否是蛇年

func (*Carbon) IsYearOfTiger

func (c *Carbon) IsYearOfTiger() bool

IsYearOfTiger 是否是虎年

func (*Carbon) IsYesterday

func (c *Carbon) IsYesterday() bool

IsYesterday 是否是昨天

func (*Carbon) LastOfMonth

func (c *Carbon) LastOfMonth() string

LastDayInMonth 当月最后一天

func (*Carbon) LastOfYear

func (c *Carbon) LastOfYear() string

LastDayInYear 当年最后一天

func (*Carbon) Now

func (c *Carbon) Now() *Carbon

Now 当前

func (*Carbon) Parse

func (c *Carbon) Parse(value string) *Carbon

Parse 解析标准时间格式

func (*Carbon) ParseByDuration

func (c *Carbon) ParseByDuration(duration string) *Carbon

ParseByDuration 解析相对时间字符串(相对于今天)

func (*Carbon) ParseByFormat

func (c *Carbon) ParseByFormat(value string, format string) *Carbon

ParseByFormat 解析自定义时间格式

func (*Carbon) Scan

func (c *Carbon) Scan(v interface{}) error

func (*Carbon) StartOfDay

func (c *Carbon) StartOfDay() string

StartOfDay 当天开始时间

func (*Carbon) StartOfMonth

func (c *Carbon) StartOfMonth() string

StartOfMonth 当月开始时间

func (*Carbon) StartOfToday

func (c *Carbon) StartOfToday() string

StartOfToday 今天开始时间

func (*Carbon) StartOfTomorrow

func (c *Carbon) StartOfTomorrow() string

StartOfTomorrow 明天开始时间

func (*Carbon) StartOfYear

func (c *Carbon) StartOfYear() string

StartOfYear 当年开始时间

func (*Carbon) StartOfYesterday

func (c *Carbon) StartOfYesterday() string

StartOfYesterday 昨天开始时间

func (*Carbon) SubDay

func (c *Carbon) SubDay() *Carbon

SubDay 1天前

func (*Carbon) SubDays

func (c *Carbon) SubDays(days int) *Carbon

SubDays N天前

func (*Carbon) SubHour

func (c *Carbon) SubHour() *Carbon

AddHour 1小时前

func (*Carbon) SubHours

func (c *Carbon) SubHours(hours int) *Carbon

AddHours N小时前

func (*Carbon) SubMinute

func (c *Carbon) SubMinute() *Carbon

SubMinute 1分钟前

func (*Carbon) SubMinutes

func (c *Carbon) SubMinutes(minutes int) *Carbon

SubMinutes N分钟前

func (*Carbon) SubMonth

func (c *Carbon) SubMonth() *Carbon

SubMonth 1月前

func (*Carbon) SubMonths

func (c *Carbon) SubMonths(months int) *Carbon

SubMonths N月前

func (*Carbon) SubSecond

func (c *Carbon) SubSecond() *Carbon

SubMinute 1秒钟前

func (*Carbon) SubSeconds

func (c *Carbon) SubSeconds(second int) *Carbon

SubMinutes N秒钟前

func (*Carbon) SubWeek

func (c *Carbon) SubWeek() *Carbon

SubWeek 1周前

func (*Carbon) SubWeeks

func (c *Carbon) SubWeeks(weeks int) *Carbon

SubWeeks N周前

func (*Carbon) SubYear

func (c *Carbon) SubYear() *Carbon

SubYear 1年前

func (*Carbon) SubYears

func (c *Carbon) SubYears(years int) *Carbon

SubYears N年前

func (*Carbon) Timezone

func (c *Carbon) Timezone(name string) *Carbon

Timezone 设置时区,必须在New()之后,其他方法之前调用

func (*Carbon) ToAnimalYear

func (c *Carbon) ToAnimalYear() string

ToAnimalYear 获取生肖年

func (*Carbon) ToDateEndString

func (c *Carbon) ToDateEndString() string

ToDateEndString 转日期结束时间字符串

func (*Carbon) ToDateStartString

func (c *Carbon) ToDateStartString() string

ToDateStartString 转日期开始时间字符串

func (*Carbon) ToDateString

func (c *Carbon) ToDateString() string

ToDateString 转日期字符串

func (*Carbon) ToDateTimeString

func (c *Carbon) ToDateTimeString() string

ToDateTimeString 转日期时间字符串

func (*Carbon) ToLunarYear

func (c *Carbon) ToLunarYear() string

ToLunarYear 获取农历年

func (*Carbon) ToTimeEndString

func (c *Carbon) ToTimeEndString() string

ToDateEndString 转结束时间字符串

func (*Carbon) ToTimeStartString

func (c *Carbon) ToTimeStartString() string

ToTimeStartString 转开始时间字符串

func (*Carbon) ToTimeString

func (c *Carbon) ToTimeString() string

ToTimeString 转时间字符串

func (*Carbon) ToTimestamp

func (c *Carbon) ToTimestamp() int64

ToTimestamp 转时间戳

func (*Carbon) Today

func (c *Carbon) Today() string

Today 今天

func (*Carbon) Tomorrow

func (c *Carbon) Tomorrow() string

Tomorrow 明天

func (Carbon) Value

func (c Carbon) Value() (driver.Value, error)

func (*Carbon) Yesterday

func (c *Carbon) Yesterday() string

Yesterday 昨天

type GormModel

type GormModel struct {
	Id        int64             `gorm:"primary_key;comment:'主键ID'" json:"id"`
	CreatedAt ToDateTimeString  `gorm:"comment:'创建时间';type:timestamp not null;default:current_timestamp;" json:"created_at"`
	UpdatedAt ToDateTimeString  `` /* 127-byte string literal not displayed */
	DeletedAt *ToDateTimeString `gorm:"comment:'删除时间'" json:"deleted_at" sql:"index"`
}

type ToDateString

type ToDateString time.Time

func (ToDateString) MarshalJSON

func (t ToDateString) MarshalJSON() ([]byte, error)

func (*ToDateString) Scan

func (t *ToDateString) Scan(v interface{}) error

func (ToDateString) Value

func (t ToDateString) Value() (driver.Value, error)

type ToDateTimeString

type ToDateTimeString time.Time

func (ToDateTimeString) MarshalJSON

func (t ToDateTimeString) MarshalJSON() ([]byte, error)

func (*ToDateTimeString) Scan

func (t *ToDateTimeString) Scan(v interface{}) error

func (ToDateTimeString) Value

func (t ToDateTimeString) Value() (driver.Value, error)

type ToTimeString

type ToTimeString time.Time

func (ToTimeString) MarshalJSON

func (t ToTimeString) MarshalJSON() ([]byte, error)

func (*ToTimeString) Scan

func (t *ToTimeString) Scan(v interface{}) error

func (ToTimeString) Value

func (t ToTimeString) Value() (driver.Value, error)

type ToTimestamp

type ToTimestamp time.Time

func (ToTimestamp) MarshalJSON

func (t ToTimestamp) MarshalJSON() ([]byte, error)

func (*ToTimestamp) Scan

func (t *ToTimestamp) Scan(v interface{}) error

func (ToTimestamp) Value

func (t ToTimestamp) Value() (driver.Value, error)

type XormModel

type XormModel struct {
	Id        int64            `xorm:"not null pk autoincr INT(11)" json:"id"`
	CreatedAt ToDateTimeString `xorm:"created_at created" json:"creat_time" description:"创建时间"`
	UpdatedAt ToDateTimeString `xorm:"updated_at updated" json:"update_time" description:"更新时间"`
	DeletedAt ToDateTimeString `json:"deleted_time" description:"删除时间"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL