carbon

package module
v2.6.3 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2025 License: MIT Imports: 13 Imported by: 2

README

Carbon

Carbon Release Go Test Go Report Card Go Coverage Carbon Doc License

English | 简体中文 | 日本語

Introduction

A simple, semantic and developer-friendly time package for golang, 100% unit test coverage, doesn't depend on any third-party library and has been included by awesome-go

Repository

github.com/dromara/carbon

gitee.com/dromara/carbon

gitcode.com/dromara/carbon

Installation
go version >= 1.18
// By github
go get -u github.com/dromara/carbon/v2
import "github.com/dromara/carbon/v2"

// By gitee
go get -u gitee.com/dromara/carbon/v2
import "gitee.com/dromara/carbon/v2"

// By gitcode
go get -u gitcode.com/dromara/carbon/v2
import "gitee.com/dromara/gitcode/v2"

Carbon was donated to the dromara organization, the repository URL has changed. If the previous repository used was golang-module/carbon, please replace the original repository with the new repository in go.mod, or execute the following command:

go mod edit -replace github.com/golang-module/carbon/v2=github.com/dromara/carbon/v2
Usage and example

Default timezone is UTC, language locale is English, start day of the week is Monday and weekend days of the week are Saturday and Sunday. Assuming the current time is 2020-08-05 13:14:15.999999999 +0000 UTC

Set globally default
carbon.SetLayout(carbon.DateTimeLayout)
carbon.SetTimezone(carbon.UTC)
carbon.SetLocale("en")
carbon.SetWeekStartsAt(carbon.Monday)
carbon.SetWeekendDays([]carbon.Weekday{carbon.Saturday, carbon.Sunday,})

or

carbon.SetDefault(carbon.Default{
  Layout: carbon.DateTimeLayout,
  Timezone: carbon.UTC,
  Locale: "en",
  WeekStartsAt: carbon.Monday,
  WeekendDays: []carbon.Weekday{carbon.Saturday, carbon.Sunday,},
})
Convert between Carbon and time.Time
// Convert standard Time.time to Carbon
carbon.NewCarbon(time.Now())
// Convert Carbon to standard Time.time
carbon.Now().StdTime()

or

// Convert standard Time.time to Carbon
loc, _ := time.LoadLocation(carbon.PRC)
carbon.CreateFromStdTime(time.Now().In(loc))
// Convert Carbon to standard Time.time
carbon.Now(carbon.PRC).StdTime()
Yesterday, today and tomorrow
// Return datetime of today
fmt.Printf("%s", carbon.Now()) // 2020-08-05 13:14:15
carbon.Now().String() // 2020-08-05 13:14:15
carbon.Now().ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC
carbon.Now().ToDateTimeString() // 2020-08-05 13:14:15
// Return date of today
carbon.Now().ToDateString() // 2020-08-05
// Return time of today
carbon.Now().ToTimeString() // 13:14:15
// Return datetime of today in a given timezone
carbon.Now(carbon.NewYork).ToDateTimeString() // 2020-08-05 13:14:15
// Return timestamp with second precision of today
carbon.Now().Timestamp() // 1596604455
// Return timestamp with millisecond precision of today
carbon.Now().TimestampMilli() // 1596604455999
// Return timestamp with microsecond precision of today
carbon.Now().TimestampMicro() // 1596604455999999
// Return timestamp with nanosecond precision of today
carbon.Now().TimestampNano() // 1596604455999999999

// Return datetime of yesterday
fmt.Printf("%s", carbon.Yesterday()) // 2020-08-04 13:14:15
carbon.Yesterday().String() // 2020-08-04 13:14:15
carbon.Yesterday().ToString() // 2020-08-04 13:14:15.999999999 +0000 UTC
carbon.Yesterday().ToDateTimeString() // 2020-08-04 13:14:15
// Return date of yesterday
carbon.Yesterday().ToDateString() // 2020-08-04
// Return time of yesterday
carbon.Yesterday().ToTimeString() // 13:14:15
// Return datetime of yesterday in a given timezone
carbon.Yesterday(carbon.NewYork).ToDateTimeString() // 2020-08-04 13:14:15
// Return timestamp with second precision of yesterday
carbon.Yesterday().Timestamp() // 1596546855
// Return timestamp with millisecond precision of yesterday
carbon.Yesterday().TimestampMilli() // 1596546855999
// Return timestamp with microsecond precision of yesterday
carbon.Yesterday().TimestampMicro() // 1596546855999999
// Return timestamp with nanosecond precision of yesterday
carbon.Yesterday().TimestampNano() // 1596546855999999999

// Return datetime of tomorrow
fmt.Printf("%s", carbon.Tomorrow()) // 2020-08-06 13:14:15
carbon.Tomorrow().String() // 2020-08-06 13:14:15
carbon.Tomorrow().ToString() // 22020-08-06 13:14:15.999999999 +0000 UTC
carbon.Tomorrow().ToDateTimeString() // 2020-08-06 13:14:15
// Return date of tomorrow
carbon.Tomorrow().ToDateString() // 2020-08-06
// Return time of tomorrow
carbon.Tomorrow().ToTimeString() // 13:14:15
// Return datetime of tomorrow in a given timezone
carbon.Tomorrow(carbon.NewYork).ToDateTimeString() // 2020-08-06 13:14:15
// Return timestamp with second precision of tomorrow
carbon.Tomorrow().Timestamp() // 1596719655
// Return timestamp with millisecond precision of tomorrow
carbon.Tomorrow().TimestampMilli() // 1596719655999
// Return timestamp with microsecond precision of tomorrow
carbon.Tomorrow().TimestampMicro() // 1596719655999999
// Return timestamp with nanosecond precision of tomorrow
carbon.Tomorrow().TimestampNano() // 1596719655999999999
Create a Carbon instance
// Create a Carbon instance from a given timestamp with second precision
carbon.CreateFromTimestamp(-1).ToString() // 1969-12-31 23:59:59 +0000 UTC
carbon.CreateFromTimestamp(0).ToString() // 1970-01-01 00:00:00 +0000 UTC
carbon.CreateFromTimestamp(1).ToString() // 1970-01-01 00:00:01 +0000 UTC
carbon.CreateFromTimestamp(1596633255).ToString() // 2020-08-05 13:14:15 +0000 UTC
// Create a Carbon instance from a given timestamp with millisecond precision
carbon.CreateFromTimestampMilli(1596633255999999).ToString() // 2020-08-05 13:14:15.999 +0000 UTC
// Create a Carbon instance from a given timestamp with microsecond precision
carbon.CreateFromTimestampMicro(1596633255999999).ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
// Create a Carbon instance from a given timestamp with nanosecond precision
carbon.CreateFromTimestampNano(1596633255999999999).ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC

// Create a Carbon instance from a given date and time
carbon.CreateFromDateTime(2020, 8, 5, 13, 14, 15).ToString() // 2020-08-05 13:14:15 +0000 UTC
// Create a Carbon instance from a given date and time with millisecond
carbon.CreateFromDateTimeMilli(2020, 8, 5, 13, 14, 15, 999).ToString() // 2020-08-05 13:14:15.999 +0000 UTC
// Create a Carbon instance from a given date and time with microsecond
carbon.CreateFromDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999).ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
// Create a Carbon instance from a given date and time with nanosecond
carbon.CreateFromDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999).ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC

// Create a Carbon instance from a given year, month and day
carbon.CreateFromDate(2020, 8, 5).ToString() // 2020-08-05 00:00:00 +0000 UTC
// Create a Carbon instance from a given year, month and day with millisecond
carbon.CreateFromDateMilli(2020, 8, 5, 999).ToString() // 2020-08-05 00:00:00.999 +0000 UTC
// Create a Carbon instance from a given year, month and day with microsecond
carbon.CreateFromDateMicro(2020, 8, 5, 999999).ToString() // 2020-08-05 00:00:00.999999 +0000 UTC
// Create a Carbon instance from a given year, month and day with nanosecond
carbon.CreateFromDateNano(2020, 8, 5, 999999999).ToString() // 2020-08-05 00:00:00.999999999 +0000 UTC

// Create a Carbon instance from a given hour, minute and second
carbon.CreateFromTime(13, 14, 15).ToString() // 2020-08-05 13:14:15 +0000 UTC
// Create a Carbon instance from a given hour, minute and second with millisecond
carbon.CreateFromTimeMilli(13, 14, 15, 999).ToString() // 2020-08-05 13:14:15.999 +0000 UTC
// Create a Carbon instance from a given hour, minute and second with microsecond
carbon.CreateFromTimeMicro(13, 14, 15, 999999).ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
// Create a Carbon instance from a given hour, minute and second with nanosecond
carbon.CreateFromTimeNano(13, 14, 15, 999999999).ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC

Parse a time string as a Carbon instance
carbon.Parse("").ToDateTimeString() // empty string
carbon.Parse("0").ToDateTimeString() // empty string
carbon.Parse("xxx").ToDateTimeString() // empty string
carbon.Parse("00:00:00").ToDateTimeString() // empty string
carbon.Parse("0000-00-00").ToDateTimeString() // empty string
carbon.Parse("0000-00-00 00:00:00").ToDateTimeString() // empty string

carbon.Parse("now").ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC
carbon.Parse("yesterday").ToString() // 2020-08-04 13:14:15.999999999 +0000 UTC
carbon.Parse("tomorrow").ToString() // 2020-08-06 13:14:15.999999999 +0000 UTC

carbon.Parse("2020").ToString() // 2020-01-01 00:00:00 +0000 UTC
carbon.Parse("2020-8").ToString() // 2020-08-01 00:00:00 +0000 UTC
carbon.Parse("2020-08").ToString() // 2020-08-01 00:00:00 +0000 UTC
carbon.Parse("2020-8-5").ToString() // 2020-08-05 00:00:00 +0000 UTC
carbon.Parse("2020-8-05").ToString() // 2020-08-05 00:00:00 +0000 UTC
carbon.Parse("2020-08-05").ToString() // 2020-08-05 00:00:00 +0000 UTC
carbon.Parse("2020-08-05.999").ToString() // 2020-08-05 00:00:00.999 +0000 UTC
carbon.Parse("2020-08-05.999999").ToString() // 2020-08-05 00:00:00.999999 +0000 UTC
carbon.Parse("2020-08-05.999999999").ToString() // 2020-08-05 00:00:00.999999999 +0000 UTC

carbon.Parse("2020-8-5 13:14:15").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-8-05 13:14:15").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-08-5 13:14:15").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-08-05 13:14:15").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-08-05 13:14:15.999").ToString() // 2020-08-05 13:14:15.999 +0000 UTC
carbon.Parse("2020-08-05 13:14:15.999999").ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
carbon.Parse("2020-08-05 13:14:15.999999999").ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC

carbon.Parse("2020-8-5T13:14:15+08:00").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-8-05T13:14:15+08:00").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-08-05T13:14:15+08:00").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-08-05T13:14:15.999+08:00").ToString() // 2020-08-05 13:14:15.999 +0000 UTC
carbon.Parse("2020-08-05T13:14:15.999999+08:00").ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC

carbon.Parse("20200805").ToString() // 2020-08-05 00:00:00 +0000 UTC
carbon.Parse("20200805131415").ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("20200805131415.999").ToString() // 2020-08-05 13:14:15.999 +0000 UTC
carbon.Parse("20200805131415.999999").ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
carbon.Parse("20200805131415.999999999").ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC
carbon.Parse("20200805131415.999+08:00").ToString() // 2020-08-05 13:14:15.999 +0000 UTC
carbon.Parse("20200805131415.999999+08:00").ToString() // 2020-08-05 13:14:15.999999 +0000 UTC
carbon.Parse("20200805131415.999999999+08:00").ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC

carbon.Parse("2022-03-08T03:01:14-07:00").ToString() // 2022-03-08 10:01:14 +0000 UTC
carbon.Parse("2022-03-08T10:01:14Z").ToString() // 2022-03-08 10:01:14 +0000 UTC
Parse a time string as a Carbon instance by a confirmed layout
carbon.ParseByLayout("2020|08|05 13|14|15", "2006|01|02 15|04|05").ToDateTimeString() // 2020-08-05 13:14:15
carbon.ParseByLayout("It is 2020-08-05 13:14:15", "It is 2006-01-02 15:04:05").ToDateTimeString() // 2020-08-05 13:14:15
carbon.ParseByLayout("今天是 2020年08月05日13时14分15秒", "今天是 2006年01月02日15时04分05秒").ToDateTimeString() // 2020-08-05 13:14:15
Parse a time string as a Carbon instance with multiple fuzzy layouts
carbon.ParseWithLayouts("2020|08|05 13|14|15", []string{"2006|01|02 15|04|05", "2006|1|2 3|4|5"}).ToDateTimeString() // 2020-08-05 13:14:15
carbon.ParseWithLayouts("2020|08|05 13|14|15", []string{"2006|01|02 15|04|05", "2006|1|2 3|4|5"}).CurrentLayout() // 2006|01|02 15|04|05
Parse a time string as a Carbon instance by a confirmed format
carbon.ParseByFormat("2020|08|05 13|14|15", "Y|m|d H|i|s").ToDateTimeString() // 2020-08-05 13:14:15
carbon.ParseByFormat("It is 2020-08-05 13:14:15", "\\I\\t \\i\\s Y-m-d H:i:s").ToDateTimeString() // 2020-08-05 13:14:15
carbon.ParseByFormat("今天是 2020年08月05日13时14分15秒", "今天是 Y年m月d日H时i分s秒").ToDateTimeString() // 2020-08-05 13:14:15
Parse a time string as a Carbon instance with multiple fuzzy formats
carbon.ParseWithFormats("2020|08|05 13|14|15", []string{"Y|m|d H|i|s", "y|m|d h|i|s"}).ToDateTimeString() // 2020-08-05 13:14:15
carbon.ParseWithFormats("2020|08|05 13|14|15", []string{"Y|m|d H|i|s", "y|m|d h|i|s"}).CurrentLayout() // 2006|01|02 15|04|05
Freeze
now := carbon.Parse("2020-08-05")
carbon.SetTestNow(now)

carbon.IsTestNow() // true
carbon.Now().ToDateString() // 2020-08-05
carbon.Yesterday().ToDateString() // 2020-08-04
carbon.Tomorrow().ToDateString() // 2020-08-05
carbon.Now().DiffForHumans() // just now
carbon.Yesterday().DiffForHumans() // 1 day ago
carbon.Tomorrow().DiffForHumans() // 1 day from now
carbon.Parse("2020-10-05").DiffForHumans() // 2 months from now
now.DiffForHumans(carbon.Parse("2020-10-05")) // 2 months before

carbon.CleanTestNow()
carbon.IsTestNow() // false
Boundary
// Start of the century
carbon.Parse("2020-08-05 13:14:15").StartOfCentury().ToDateTimeString() // 2000-01-01 00:00:00
// End of the century
carbon.Parse("2020-08-05 13:14:15").EndOfCentury().ToDateTimeString() // 2999-12-31 23:59:59

// Start of the decade
carbon.Parse("2020-08-05 13:14:15").StartOfDecade().ToDateTimeString() // 2020-01-01 00:00:00
carbon.Parse("2021-08-05 13:14:15").StartOfDecade().ToDateTimeString() // 2020-01-01 00:00:00
carbon.Parse("2029-08-05 13:14:15").StartOfDecade().ToDateTimeString() // 2020-01-01 00:00:00
// End of the decade
carbon.Parse("2020-08-05 13:14:15").EndOfDecade().ToDateTimeString() // 2029-12-31 23:59:59
carbon.Parse("2021-08-05 13:14:15").EndOfDecade().ToDateTimeString() // 2029-12-31 23:59:59
carbon.Parse("2029-08-05 13:14:15").EndOfDecade().ToDateTimeString() // 2029-12-31 23:59:59

// Start of the year
carbon.Parse("2020-08-05 13:14:15").StartOfYear().ToDateTimeString() // 2020-01-01 00:00:00
// End of the year
carbon.Parse("2020-08-05 13:14:15").EndOfYear().ToDateTimeString() // 2020-12-31 23:59:59

// Start of the quarter
carbon.Parse("2020-08-05 13:14:15").StartOfQuarter().ToDateTimeString() // 2020-07-01 00:00:00
// End of the quarter
carbon.Parse("2020-08-05 13:14:15").EndOfQuarter().ToDateTimeString() // 2020-09-30 23:59:59

// Start of the month
carbon.Parse("2020-08-05 13:14:15").StartOfMonth().ToDateTimeString() // 2020-08-01 00:00:00
// End of the month
carbon.Parse("2020-08-05 13:14:15").EndOfMonth().ToDateTimeString() // 2020-08-31 23:59:59

// Start of the week
carbon.Parse("2020-08-05 13:14:15").StartOfWeek().ToDateTimeString() // 2020-08-02 00:00:00
carbon.Parse("2020-08-05 13:14:15").SetWeekStartsAt(carbon.Sunday).StartOfWeek().ToDateTimeString() // 2020-08-02 00:00:00
carbon.Parse("2020-08-05 13:14:15").SetWeekStartsAt(carbon.Monday).StartOfWeek().ToDateTimeString() // 2020-08-03 00:00:00
// End of the week
carbon.Parse("2020-08-05 13:14:15").EndOfWeek().ToDateTimeString() // 2020-08-08 23:59:59
carbon.Parse("2020-08-05 13:14:15").SetWeekStartsAt(carbon.Sunday).EndOfWeek().ToDateTimeString() // 2020-08-08 23:59:59
carbon.Parse("2020-08-05 13:14:15").SetWeekStartsAt(carbon.Monday).EndOfWeek().ToDateTimeString() // 2020-08-09 23:59:59

// Start of the day
carbon.Parse("2020-08-05 13:14:15").StartOfDay().ToDateTimeString() // 2020-08-05 00:00:00
// End of the day
carbon.Parse("2020-08-05 13:14:15").EndOfDay().ToDateTimeString() // 2020-08-05 23:59:59

// Start of the hour
carbon.Parse("2020-08-05 13:14:15").StartOfHour().ToDateTimeString() // 2020-08-05 13:00:00
// End of the hour
carbon.Parse("2020-08-05 13:14:15").EndOfHour().ToDateTimeString() // 2020-08-05 13:59:59

// Start of the minute
carbon.Parse("2020-08-05 13:14:15").StartOfMinute().ToDateTimeString() // 2020-08-05 13:14:00
// End of the minute
carbon.Parse("2020-08-05 13:14:15").EndOfMinute().ToDateTimeString() // 2020-08-05 13:14:59

// Start of the second
carbon.Parse("2020-08-05 13:14:15").StartOfSecond().ToString() // 2020-08-05 13:14:15 +0000 UTC
// End of the second
carbon.Parse("2020-08-05 13:14:15").EndOfSecond().ToString() // 2020-08-05 13:14:15.999999999 +0000 UTC
Traveler
// Add three centuries
carbon.Parse("2020-02-29 13:14:15").AddCenturies(3).ToDateTimeString() // 2320-02-29 13:14:15
// Add three centuries without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddCenturiesNoOverflow(3).ToDateTimeString() // 2320-02-29 13:14:15
// Add one century
carbon.Parse("2020-02-29 13:14:15").AddCentury().ToDateTimeString() // 2120-02-29 13:14:15
// Add one century without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddCenturyNoOverflow().ToDateTimeString() // 2120-02-29 13:14:15
// Subtract three centuries
carbon.Parse("2020-02-29 13:14:15").SubCenturies(3).ToDateTimeString() // 1720-02-29 13:14:15
// Subtract three centuries without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubCenturiesNoOverflow(3).ToDateTimeString() // 1720-02-29 13:14:15
// Subtract one century
carbon.Parse("2020-02-29 13:14:15").SubCentury().ToDateTimeString() // 1920-02-29 13:14:15
// Subtract one century without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubCenturyNoOverflow().ToDateTimeString() // 1920-02-20 13:14:15

// Add three decades
carbon.Parse("2020-02-29 13:14:15").AddDecades(3).ToDateTimeString() // 2050-03-01 13:14:15
// Add three decades without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddDecadesNoOverflow(3).ToDateTimeString() // 2050-02-28 13:14:15
// Add one decade
carbon.Parse("2020-02-29 13:14:15").AddDecade().ToDateTimeString() // 2030-03-01 13:14:15
// Add one decade without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddDecadeNoOverflow().ToDateTimeString() // 2030-02-28 13:14:15
// Subtract three decades
carbon.Parse("2020-02-29 13:14:15").SubDecades(3).ToDateTimeString() // 1990-03-01 13:14:15
// Subtract three decades without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubDecadesNoOverflow(3).ToDateTimeString() // 1990-02-28 13:14:15
// Subtract one decade
carbon.Parse("2020-02-29 13:14:15").SubDecade().ToDateTimeString() // 2010-03-01 13:14:15
// Subtract one decade without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubDecadeNoOverflow().ToDateTimeString() // 2010-02-28 13:14:15

// Add three years
carbon.Parse("2020-02-29 13:14:15").AddYears(3).ToDateTimeString() // 2023-03-01 13:14:15
// Add three years without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddYearsNoOverflow(3).ToDateTimeString() // 2023-02-28 13:14:15
// Add one year
carbon.Parse("2020-02-29 13:14:15").AddYear().ToDateTimeString() // 2021-03-01 13:14:15
// Add one year without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddYearNoOverflow().ToDateTimeString() // 2021-02-28 13:14:15
// Subtract three years
carbon.Parse("2020-02-29 13:14:15").SubYears(3).ToDateTimeString() // 2017-03-01 13:14:15
// Subtract three years without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubYearsNoOverflow(3).ToDateTimeString() // 2017-02-28 13:14:15
// Subtract one year
carbon.Parse("2020-02-29 13:14:15").SubYear().ToDateTimeString() // 2019-03-01 13:14:15
// Subtract one year without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubYearNoOverflow().ToDateTimeString() // 2019-02-28 13:14:15

// Add three quarters
carbon.Parse("2019-05-31 13:14:15").AddQuarters(3).ToDateTimeString() // 2020-03-02 13:14:15
// Add three quarters without overflowing month
carbon.Parse("2019-05-31 13:14:15").AddQuartersNoOverflow(3).ToDateTimeString() // 2020-02-29 13:14:15
// Add one quarter
carbon.Parse("2019-11-30 13:14:15").AddQuarter().ToDateTimeString() // 2020-03-01 13:14:15
// Add one quarter without overflowing month
carbon.Parse("2019-11-30 13:14:15").AddQuarterNoOverflow().ToDateTimeString() // 2020-02-29 13:14:15
// Subtract three quarters
carbon.Parse("2019-08-31 13:14:15").SubQuarters(3).ToDateTimeString() // 2019-03-03 13:14:15
// Subtract three quarters without overflowing month
carbon.Parse("2019-08-31 13:14:15").SubQuartersNoOverflow(3).ToDateTimeString() // 2019-02-28 13:14:15
// Subtract one quarter
carbon.Parse("2020-05-31 13:14:15").SubQuarter().ToDateTimeString() // 2020-03-02 13:14:15
// Subtract one quarter without overflowing month
carbon.Parse("2020-05-31 13:14:15").SubQuarterNoOverflow().ToDateTimeString() // 2020-02-29 13:14:15

// Add three months
carbon.Parse("2020-02-29 13:14:15").AddMonths(3).ToDateTimeString() // 2020-05-29 13:14:15
// Add three months without overflowing month
carbon.Parse("2020-02-29 13:14:15").AddMonthsNoOverflow(3).ToDateTimeString() // 2020-05-29 13:14:15
// Add one month
carbon.Parse("2020-01-31 13:14:15").AddMonth().ToDateTimeString() // 2020-03-02 13:14:15
// Add one month without overflowing month
carbon.Parse("2020-01-31 13:14:15").AddMonthNoOverflow().ToDateTimeString() // 2020-02-29 13:14:15
// Subtract three months
carbon.Parse("2020-02-29 13:14:15").SubMonths(3).ToDateTimeString() // 2019-11-29 13:14:15
// Subtract three months without overflowing month
carbon.Parse("2020-02-29 13:14:15").SubMonthsNoOverflow(3).ToDateTimeString() // 2019-11-29 13:14:15
// Subtract one month
carbon.Parse("2020-03-31 13:14:15").SubMonth().ToDateTimeString() // 2020-03-02 13:14:15
// Subtract one month without overflowing month
carbon.Parse("2020-03-31 13:14:15").SubMonthNoOverflow().ToDateTimeString() // 2020-02-29 13:14:15

// Add three weeks
carbon.Parse("2020-02-29 13:14:15").AddWeeks(3).ToDateTimeString() // 2020-03-21 13:14:15
// Add one week
carbon.Parse("2020-02-29 13:14:15").AddWeek().ToDateTimeString() // 2020-03-07 13:14:15
// Subtract three weeks
carbon.Parse("2020-02-29 13:14:15").SubWeeks(3).ToDateTimeString() // 2020-02-08 13:14:15
// Subtract three week
carbon.Parse("2020-02-29 13:14:15").SubWeek().ToDateTimeString() // 2020-02-22 13:14:15

// Add three days
carbon.Parse("2020-08-05 13:14:15").AddDays(3).ToDateTimeString() // 2020-08-08 13:14:15
// Add one day
carbon.Parse("2020-08-05 13:14:15").AddDay().ToDateTimeString() // 2020-08-05 13:14:15
// Subtract three days
carbon.Parse("2020-08-05 13:14:15").SubDays(3).ToDateTimeString() // 2020-08-02 13:14:15
// Subtract one day
carbon.Parse("2020-08-05 13:14:15").SubDay().ToDateTimeString() // 2020-08-04 13:14:15

// Add three hours
carbon.Parse("2020-08-05 13:14:15").AddHours(3).ToDateTimeString() // 2020-08-05 16:14:15
// Add two and a half hours
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").AddDuration("2h30m").ToDateTimeString() // 2020-08-05 15:44:15
// Add one hour
carbon.Parse("2020-08-05 13:14:15").AddHour().ToDateTimeString() // 2020-08-05 14:14:15
// Subtract three hours
carbon.Parse("2020-08-05 13:14:15").SubHours(3).ToDateTimeString() // 2020-08-05 10:14:15
// Subtract two and a half hours
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").SubDuration("2h30m").ToDateTimeString() // 2020-08-05 10:44:15
// Subtract one hour
carbon.Parse("2020-08-05 13:14:15").SubHour().ToDateTimeString() // 2020-08-05 12:14:15

// Add three minutes
carbon.Parse("2020-08-05 13:14:15").AddMinutes(3).ToDateTimeString() // 2020-08-05 13:17:15
// Add two and a half minutes
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").AddDuration("2m30s").ToDateTimeString() // 2020-08-05 13:16:45
// Add one minute
carbon.Parse("2020-08-05 13:14:15").AddMinute().ToDateTimeString() // 2020-08-05 13:15:15
// Subtract three minutes
carbon.Parse("2020-08-05 13:14:15").SubMinutes(3).ToDateTimeString() // 2020-08-05 13:11:15
// Subtract two and a half minutes
carbon.Parse("2020-08-05 13:14:15").SubDuration("2.5m").ToDateTimeString() // 2020-08-05 13:11:45
// Subtract one minute
carbon.Parse("2020-08-05 13:14:15").SubMinute().ToDateTimeString() // 2020-08-05 13:13:15

// Add three seconds
carbon.Parse("2020-08-05 13:14:15").AddSeconds(3).ToDateTimeString() // 2020-08-05 13:14:18
// Add two and a half seconds
carbon.Parse("2020-08-05 13:14:15").AddDuration("2.5s").ToDateTimeString() // 2020-08-05 13:14:17
// Add one second
carbon.Parse("2020-08-05 13:14:15").AddSecond().ToDateTimeString() // 2020-08-05 13:14:16
// Subtract three seconds
carbon.Parse("2020-08-05 13:14:15").SubSeconds(3).ToDateTimeString() // 2020-08-05 13:14:12
// Subtract two and a half seconds
carbon.Parse("2020-08-05 13:14:15").SubDuration("2.5s").ToDateTimeString() // 2020-08-05 13:14:12
// Subtract one second
carbon.Parse("2020-08-05 13:14:15").SubSecond().ToDateTimeString() // 2020-08-05 13:14:14

// Add three milliseconds
carbon.Parse("2020-08-05 13:14:15.222222222").AddMilliseconds(3).ToString() // 2020-08-05 13:14:15.225222222 +0000 UTC
// Add one millisecond
carbon.Parse("2020-08-05 13:14:15.222222222").AddMillisecond().ToString() // 2020-08-05 13:14:15.223222222 +0000 UTC
// Subtract three milliseconds
carbon.Parse("2020-08-05 13:14:15.222222222").SubMilliseconds(3).ToString() // 2020-08-05 13:14:15.219222222 +0000 UTC
// Subtract one millisecond
carbon.Parse("2020-08-05 13:14:15.222222222").SubMillisecond().ToString() // 2020-08-05 13:14:15.221222222 +0000 UTC

// Add three microseconds
carbon.Parse("2020-08-05 13:14:15.222222222").AddMicroseconds(3).ToString() // 2020-08-05 13:14:15.222225222 +0000 UTC
// Add one microsecond
carbon.Parse("2020-08-05 13:14:15.222222222").AddMicrosecond().ToString() // 2020-08-05 13:14:15.222223222 +0000 UTC
// Subtract three microseconds
carbon.Parse("2020-08-05 13:14:15.222222222").SubMicroseconds(3).ToString() // 2020-08-05 13:14:15.222219222 +0000 UTC
// Subtract one microsecond
carbon.Parse("2020-08-05 13:14:15.222222222").SubMicrosecond().ToString() // 2020-08-05 13:14:15.222221222 +0000 UTC

// Add three nanoseconds
carbon.Parse("2020-08-05 13:14:15.222222222").AddNanoseconds(3).ToString() // 2020-08-05 13:14:15.222222225 +0000 UTC
// Add one nanosecond
carbon.Parse("2020-08-05 13:14:15.222222222").AddNanosecond().ToString() // 2020-08-05 13:14:15.222222223 +0000 UTC
// Subtract three nanoseconds
carbon.Parse("2020-08-05 13:14:15.222222222").SubNanoseconds(3).ToString() // 2020-08-05 13:14:15.222222219 +0000 UTC
// Subtract one nanosecond
carbon.Parse("2020-08-05 13:14:15.222222222").SubNanosecond().ToString() // 2020-08-05 13:14:15.222222221 +0000 UTC
Difference
// Difference in years
carbon.Parse("2021-08-05 13:14:15").DiffInYears(carbon.Parse("2020-08-05 13:14:15")) // -1
// Difference in years with absolute value
carbon.Parse("2021-08-05 13:14:15").DiffAbsInYears(carbon.Parse("2020-08-05 13:14:15")) // 1

// Difference in months
carbon.Parse("2020-08-05 13:14:15").DiffInMonths(carbon.Parse("2020-07-05 13:14:15")) // -1
// Difference in months with absolute value
carbon.Parse("2020-08-05 13:14:15").DiffAbsInMonths(carbon.Parse("2020-07-05 13:14:15")) // 1

// Difference in weeks
carbon.Parse("2020-08-05 13:14:15").DiffInWeeks(carbon.Parse("2020-07-28 13:14:15")) // -1
// Difference in weeks with absolute value
carbon.Parse("2020-08-05 13:14:15").DiffAbsInWeeks(carbon.Parse("2020-07-28 13:14:15")) // 1

// Difference in days
carbon.Parse("2020-08-05 13:14:15").DiffInDays(carbon.Parse("2020-08-04 13:14:15")) // -1
// Difference in days with absolute value
carbon.Parse("2020-08-05 13:14:15").DiffAbsInDays(carbon.Parse("2020-08-04 13:14:15")) // 1

// Difference in hours
carbon.Parse("2020-08-05 13:14:15").DiffInHours(carbon.Parse("2020-08-05 12:14:15")) // -1
// Difference in hours with absolute value
carbon.Parse("2020-08-05 13:14:15").DiffAbsInHours(carbon.Parse("2020-08-05 12:14:15")) // 1

// Difference in minutes
carbon.Parse("2020-08-05 13:14:15").DiffInMinutes(carbon.Parse("2020-08-05 13:13:15")) // -1
// Difference in minutes with absolute value
carbon.Parse("2020-08-05 13:14:15").DiffAbsInMinutes(carbon.Parse("2020-08-05 13:13:15")) // 1

// Difference in seconds
carbon.Parse("2020-08-05 13:14:15").DiffInSeconds(carbon.Parse("2020-08-05 13:14:14")) // -1
// Difference in seconds with absolute value
carbon.Parse("2020-08-05 13:14:15").DiffAbsInSeconds(carbon.Parse("2020-08-05 13:14:14")) // 1

// Difference in string
carbon.Now().DiffInString() // just now
carbon.Now().AddYearsNoOverflow(1).DiffInString() // -1 year
carbon.Now().SubYearsNoOverflow(1).DiffInString() // 1 year
// Difference in string with absolute value
carbon.Now().DiffAbsInString(carbon.Now()) // just now
carbon.Now().AddYearsNoOverflow(1).DiffAbsInString(carbon.Now()) // 1 year
carbon.Now().SubYearsNoOverflow(1).DiffAbsInString(carbon.Now()) // 1 year

// Difference in duration
now := carbon.Now()
now.DiffInDuration(now).String() // 0s
now.AddHour().DiffInDuration(now).String() // 1h0m0s
now.SubHour().DiffInDuration(now).String() // -1h0m0s
// Difference in duration with absolute value
now.DiffAbsInDuration(now).String() // 0s
now.AddHour().DiffAbsInDuration(now).String() // 1h0m0s
now.SubHour().DiffAbsInDuration(now).String() // 1h0m0s

// Difference in a human-readable format
carbon.Parse("2020-08-05 13:14:15").DiffForHumans() // just now
carbon.Parse("2019-08-05 13:14:15").DiffForHumans() // 1 year ago
carbon.Parse("2018-08-05 13:14:15").DiffForHumans() // 2 years ago
carbon.Parse("2021-08-05 13:14:15").DiffForHumans() // 1 year from now
carbon.Parse("2022-08-05 13:14:15").DiffForHumans() // 2 years from now
// Difference in a human-readable format from now time
carbon.Parse("2020-08-05 13:14:15").DiffForHumans(carbon.Now()) // 1 year before
carbon.Parse("2019-08-05 13:14:15").DiffForHumans(carbon.Now()) // 2 years before
carbon.Parse("2018-08-05 13:14:15").DiffForHumans(carbon.Now()) // 1 year after
carbon.Parse("2022-08-05 13:14:15").DiffForHumans(carbon.Now()) // 2 years after
Extremum
c1 := carbon.Parse("2023-03-28")
c2 := carbon.Parse("2023-04-16")
// Return the closest Carbon instance
carbon.Parse("2023-04-01").Closest(c1, c2) // c1
// Return the farthest Carbon instance
carbon.Parse("2023-04-01").Farthest(c1, c2) // c2

yesterday := carbon.Yesterday()
today     := carbon.Now()
tomorrow  := carbon.Tomorrow()
// Return the maximum Carbon instance
carbon.Max(yesterday, today, tomorrow) // tomorrow
// Return the minimum Carbon instance
carbon.Min(yesterday, today, tomorrow) // yesterday

// Return a Carbon instance for the greatest supported date
carbon.MaxValue().ToString() // 9999-12-31 23:59:59.999999999 +0000 UTC
// Return a Carbon instance for the lowest supported date
carbon.MinValue().ToString() // 0001-01-01 00:00:00 +0000 UTC

// Return the maximum duration
carbon.MaxDuration().Seconds() // 9.223372036854776e+09
// Return the minimum duration
carbon.MinDuration().Seconds() // -9.223372036854776e+09
Comparison
// Whether it has error
carbon.Parse("0001-01-01 00:00:00 +0000 UTC").HasError() // false
carbon.NewCarbon().HasError() // false
carbon.Parse("").HasError() // false
carbon.Parse("0").HasError() // true
carbon.Parse("xxx").HasError() // true
carbon.Parse("2020-08-05").HasError() // false
carbon.CreateFromTimestamp(0).HasError() // false

// Whether is a nil time
carbon.Parse("0001-01-01 00:00:00 +0000 UTC").IsNil() // false
carbon.NewCarbon().IsNil() // false
carbon.Parse("").IsNil() // true
carbon.Parse("0").IsNil() // false
carbon.Parse("xxx").IsNil() // false
carbon.NewCarbon().IsNil() // false
carbon.CreateFromTimestamp(0).IsNil() // false

// Whether is a zero time(0001-01-01 00:00:00 +0000 UTC)
carbon.Parse("0001-01-01 00:00:00 +0000 UTC").IsZero() // true
carbon.NewCarbon().IsZero() // true
carbon.CreateFromTimestamp(0).IsZero() // false
carbon.Parse("").IsZero() // false
carbon.Parse("xxx").IsZero() // false
carbon.Parse("0").IsZero() // false
carbon.Parse("0000-00-00 00:00:00").IsZero() // false
carbon.Parse("0000-00-00").IsZero() // false
carbon.Parse("00:00:00").IsZero() // false
carbon.Parse("2020-08-05 00:00:00").IsZero() // false
carbon.Parse("2020-08-05").IsZero() // false
carbon.Parse("2020-08-05").SetTimezone("xxx").IsZero() // false

// Whether is a unix epoch time(1970-01-01 00:00:00 +0000 UTC).
carbon.Parse("1970-01-01 00:00:00 +0000 UTC").IsEpoch() // true
carbon.CreateFromTimestamp(0).IsEpoch() // true
carbon.Parse("0001-01-01 00:00:00 +0000 UTC").IsEpoch() // false
carbon.NewCarbon().IsEpoch() // false
carbon.Parse("").IsEpoch() // false
carbon.Parse("0").IsEpoch() // false
carbon.Parse("xxx").IsEpoch() // false
carbon.Parse("0000-00-00 00:00:00").IsEpoch() // false
carbon.Parse("0000-00-00").IsEpoch() // false
carbon.Parse("00:00:00").IsEpoch() // false
carbon.Parse("2020-08-05 00:00:00").IsEpoch() // false
carbon.Parse("2020-08-05").IsEpoch() // false
carbon.Parse("2020-08-05").SetTimezone("xxx").IsEpoch() // false

// Whether is a valid time
carbon.Parse("0001-01-01 00:00:00 +0000 UTC").IsValid()
carbon.CreateFromTimestamp(0).IsValid() // true
carbon.NewCarbon().IsValid() // true
carbon.Parse("").IsValid() // false
carbon.Parse("0").IsValid() // false
carbon.Parse("xxx").IsValid() // false
carbon.Parse("0000-00-00 00:00:00").IsValid() // false
carbon.Parse("0000-00-00").IsValid() // false
carbon.Parse("00:00:00").IsValid() // false
carbon.Parse("2020-08-05 00:00:00").IsValid() // true
carbon.Parse("2020-08-05").IsValid() // true
carbon.Parse("2020-08-05").SetTimezone("xxx").IsValid() // false

// Whether is an invalid time
carbon.Parse("0001-01-01 00:00:00 +0000 UTC").IsInvalid() // false
carbon.CreateFromTimestamp(0).IsInvalid() // false
carbon.NewCarbon().IsInvalid() // false
carbon.Parse("").IsInvalid() // true
carbon.Parse("0").IsInvalid() // true
carbon.Parse("xxx").IsInvalid() // true
carbon.Parse("0000-00-00 00:00:00").IsInvalid() // true
carbon.Parse("0000-00-00").IsInvalid() // true
carbon.Parse("00:00:00").IsInvalid() // true
carbon.Parse("2020-08-05 00:00:00").IsInvalid() // false
carbon.Parse("2020-08-05").IsInvalid() // false
carbon.Parse("2020-08-05").SetTimezone("xxx").IsInvalid() // true

// Whether is a daylight saving time
carbon.Parse("").IsDST() // false
carbon.Parse("0").IsDST() // false
carbon.Parse("xxx").IsDST() // false
carbon.Parse("0000-00-00 00:00:00").IsDST() // false
carbon.Parse("0000-00-00").IsDST() // false
carbon.Parse("00:00:00").IsDST() // false
carbon.Parse("2023-01-01", "Australia/Brisbane").IsDST() // false
carbon.Parse("2023-01-01", "Australia/Sydney").IsDST() // true

// Whether is a forenoon time
carbon.Parse("2020-08-05 00:00:00").IsAM() // true
carbon.Parse("2020-08-05 08:00:00").IsAM() // true
carbon.Parse("2020-08-05 12:00:00").IsAM() // false
carbon.Parse("2020-08-05 13:00:00").IsAM() // false
// Whether is an afternoon time 
carbon.Parse("2020-08-05 00:00:00").IsPM() // false
carbon.Parse("2020-08-05 08:00:00").IsPM() // false
carbon.Parse("2020-08-05 12:00:00").IsPM() // true
carbon.Parse("2020-08-05 13:00:00").IsPM() // true

// Whether is a now time
carbon.Now().IsNow() // true
// Whether is a future time
carbon.Tomorrow().IsFuture() // true
// Whether is a pass time
carbon.Yesterday().IsPast() // true

// Whether is a leap year
carbon.Parse("2020-08-05 13:14:15").IsLeapYear() // true
// Whether is a long year
carbon.Parse("2020-08-05 13:14:15").IsLongYear() // true

// Whether is January
carbon.Parse("2020-08-05 13:14:15").IsJanuary() // false
// Whether is February
carbon.Parse("2020-08-05 13:14:15").IsFebruary() // false
// Whether is March
carbon.Parse("2020-08-05 13:14:15").IsMarch() // false
// Whether is April
carbon.Parse("2020-08-05 13:14:15").IsApril()  // false
// Whether is May
carbon.Parse("2020-08-05 13:14:15").IsMay() // false
// Whether is June
carbon.Parse("2020-08-05 13:14:15").IsJune() // false
// Whether is July
carbon.Parse("2020-08-05 13:14:15").IsJuly() // false
// Whether is August
carbon.Parse("2020-08-05 13:14:15").IsAugust() // false
// Whether is September
carbon.Parse("2020-08-05 13:14:15").IsSeptember() // true
// Whether is October
carbon.Parse("2020-08-05 13:14:15").IsOctober() // false
// Whether is November
carbon.Parse("2020-08-05 13:14:15").IsNovember() // false
// Whether is December
carbon.Parse("2020-08-05 13:14:15").IsDecember() // false

// Whether is Monday
carbon.Parse("2020-08-05 13:14:15").IsMonday() // false
// Whether is Tuesday
carbon.Parse("2020-08-05 13:14:15").IsTuesday() // true
// Whether is Wednesday
carbon.Parse("2020-08-05 13:14:15").IsWednesday() // false
// Whether is Thursday
carbon.Parse("2020-08-05 13:14:15").IsThursday() // false
// Whether is Friday
carbon.Parse("2020-08-05 13:14:15").IsFriday() // false
// Whether is Saturday
carbon.Parse("2020-08-05 13:14:15").IsSaturday() // false
// Whether is Sunday
carbon.Parse("2020-08-05 13:14:15").IsSunday() // false
// Whether is weekday
carbon.Parse("2020-08-05 13:14:15").IsWeekday() // false
// Whether is weekend
carbon.Parse("2020-08-05 13:14:15").IsWeekend() // true

// Whether is yesterday
carbon.Parse("2020-08-04 13:14:15").IsYesterday() // true
carbon.Parse("2020-08-04 00:00:00").IsYesterday() // true
carbon.Parse("2020-08-04").IsYesterday() // true
// Whether is today
carbon.Parse("2020-08-05 13:14:15").IsToday() // true
carbon.Parse("2020-08-05 00:00:00").IsToday() // true
carbon.Parse("2020-08-05").IsToday() // true
// Whether is tomorrow
carbon.Parse("2020-08-06 13:14:15").IsTomorrow() // true
carbon.Parse("2020-08-06 00:00:00").IsTomorrow() // true
carbon.Parse("2020-08-06").IsTomorrow() // true

// Whether is the same century
carbon.Parse("2020-08-05 13:14:15").IsSameCentury(carbon.Parse("3020-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").IsSameCentury(carbon.Parse("2099-08-05 13:14:15")) // true
// Whether is the same decade
carbon.Parse("2020-08-05 13:14:15").IsSameDecade(carbon.Parse("2030-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").IsSameDecade(carbon.Parse("2120-08-05 13:14:15")) // true
// Whether is the same year
carbon.Parse("2020-08-05 00:00:00").IsSameYear(carbon.Parse("2021-08-05 13:14:15")) // false
carbon.Parse("2020-01-01 00:00:00").IsSameYear(carbon.Parse("2020-12-31 13:14:15")) // true
// Whether is the same quarter
carbon.Parse("2020-08-05 00:00:00").IsSameQuarter(carbon.Parse("2020-09-05 13:14:15")) // false
carbon.Parse("2020-01-01 00:00:00").IsSameQuarter(carbon.Parse("2021-01-31 13:14:15")) // true
// Whether is the same month
carbon.Parse("2020-01-01 00:00:00").IsSameMonth(carbon.Parse("2021-01-31 13:14:15")) // false
carbon.Parse("2020-01-01 00:00:00").IsSameMonth(carbon.Parse("2020-01-31 13:14:15")) // true
// Whether is the same day
carbon.Parse("2020-08-05 13:14:15").IsSameDay(carbon.Parse("2021-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 00:00:00").IsSameDay(carbon.Parse("2020-08-05 13:14:15")) // true
// Whether is the same hour
carbon.Parse("2020-08-05 13:14:15").IsSameHour(carbon.Parse("2021-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:00:00").IsSameHour(carbon.Parse("2020-08-05 13:14:15")) // true
// Whether is the same minute
carbon.Parse("2020-08-05 13:14:15").IsSameMinute(carbon.Parse("2021-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:00").IsSameMinute(carbon.Parse("2020-08-05 13:14:15")) // true
// Whether is the same second
carbon.Parse("2020-08-05 13:14:15").IsSameSecond(carbon.Parse("2021-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").IsSameSecond(carbon.Parse("2020-08-05 13:14:15")) // true

// Whether greater than
carbon.Parse("2020-08-05 13:14:15").Gt(carbon.Parse("2020-08-04 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Gt(carbon.Parse("2020-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").Compare(">", carbon.Parse("2020-08-04 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare(">", carbon.Parse("2020-08-05 13:14:15")) // false

// Whether less than
carbon.Parse("2020-08-05 13:14:15").Lt(carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Lt(carbon.Parse("2020-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").Compare("<", carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare("<", carbon.Parse("2020-08-05 13:14:15")) // false

// Whether equal
carbon.Parse("2020-08-05 13:14:15").Eq(carbon.Parse("2020-08-05 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Eq(carbon.Parse("2020-08-05 13:14:00")) // false
carbon.Parse("2020-08-05 13:14:15").Compare("=", carbon.Parse("2020-08-05 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare("=", carbon.Parse("2020-08-05 13:14:00")) // false

// Whether not equal
carbon.Parse("2020-08-05 13:14:15").Ne(carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Ne(carbon.Parse("2020-08-05 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").Compare("!=", carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare("<>", carbon.Parse("2020-08-05 13:14:15")) // false

// Whether greater than or equal
carbon.Parse("2020-08-05 13:14:15").Gte(carbon.Parse("2020-08-04 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Gte(carbon.Parse("2020-08-05 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare(">=", carbon.Parse("2020-08-04 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare(">=", carbon.Parse("2020-08-05 13:14:15")) // true

// Whether less than or equal
carbon.Parse("2020-08-05 13:14:15").Lte(carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Lte(carbon.Parse("2020-08-05 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare("<=", carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").Compare("<=", carbon.Parse("2020-08-05 13:14:15")) // true

// Whether between two Carbon instances, excluded the start and end Carbon instance
carbon.Parse("2020-08-05 13:14:15").Between(carbon.Parse("2020-08-05 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // false
carbon.Parse("2020-08-05 13:14:15").Between(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true

// Whether between two Carbon instances, included the start Carbon instance
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedStart(carbon.Parse("2020-08-05 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedStart(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true

// Whether between two Carbon instances, included the end Carbon instance
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedEnd(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-05 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedEnd(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true

// Whether between two Carbon instances, included the start and end Carbon instance
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedBoth(carbon.Parse("2020-08-05 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedBoth(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-05 13:14:15")) // true

Refer to https://en.wikipedia.org/wiki/ISO_8601#Week_dates for the definition of long year

Setter
// Set timezone
carbon.Parse("2020-08-05 13:14:15").SetTimezone(carbon.UTC).ToString() // 2020-08-05 13:14:15 +0000 UTC
carbon.Parse("2020-08-05 13:14:15").SetTimezone(carbon.PRC).ToString() // 2020-08-05 21:14:15 +0800 CST
carbon.Parse("2020-08-05 13:14:15").SetTimezone(carbon.Tokyo).ToString() // 2020-08-05 22:14:15 +0900 JST

// Set location
utc, _ := time.LoadLocation(carbon.UTC)
carbon.Parse("2020-08-05 13:14:15").SetLocation(utc).ToString() // 2020-08-05 13:14:15 +0000 UTC
prc, _ := time.LoadLocation(carbon.PRC)
carbon.Parse("2020-08-05 13:14:15").SetLocation(prc).ToString() // 2020-08-05 21:14:15 +0800 CST
tokyo, _ := time.LoadLocation(carbon.Tokyo)
carbon.Parse("2020-08-05 13:14:15").SetLocation(tokyo).ToString() // 2020-08-05 22:14:15 +0900 JST

// Set locale
carbon.Parse("2020-07-05 13:14:15").SetLocale("en").DiffForHumans() // 1 month before
carbon.Parse("2020-07-05 13:14:15").SetLocale("zh-CN").DiffForHumans() // 1 月前

// Set year, month, day, hour, minute and second
carbon.Parse("2020-01-01").SetDateTime(2019, 2, 2, 13, 14, 15).ToString() // 2019-02-02 13:14:15 +0000 UTC
carbon.Parse("2020-01-01").SetDateTime(2019, 2, 31, 13, 14, 15).ToString() // 2019-03-03 13:14:15 +0000 UTC
// Set year, month, day, hour, minute, second and millisecond
carbon.Parse("2020-01-01").SetDateTimeMilli(2019, 2, 2, 13, 14, 15, 999).ToString() // 2019-02-02 13:14:15.999 +0000 UTC
carbon.Parse("2020-01-01").SetDateTimeMilli(2019, 2, 31, 13, 14, 15, 999).ToString() // 2019-03-03 13:14:15.999 +0000 UTC
// Set year, month, day, hour, minute, second and microsecond
carbon.Parse("2020-01-01").SetDateTimeMicro(2019, 2, 2, 13, 14, 15, 999999).ToString() // 2019-02-02 13:14:15.999999 +0000 UTC
carbon.Parse("2020-01-01").SetDateTimeMicro(2019, 2, 31, 13, 14, 15, 999999).ToString() // 2019-03-03 13:14:15.999999 +0000 UTC
// Set year, month, day, hour, minute, second and nanosecond
carbon.Parse("2020-01-01").SetDateTimeNano(2019, 2, 2, 13, 14, 15, 999999999).ToString() // 2019-02-02 13:14:15.999999999 +0000 UTC
carbon.Parse("2020-01-01").SetDateTimeNano(2019, 2, 31, 13, 14, 15, 999999999).ToString() // 2019-03-03 13:14:15.999999999 +0000 UTC

// Set year, month and day
carbon.Parse("2020-01-01").SetDate(2019, 2, 2).ToString() // 2019-02-02 00:00:00 +0000 UTC
carbon.Parse("2020-01-01").SetDate(2019, 2, 31).ToString() // 2019-03-03 00:00:00 +0000 UTC
// Set year, month, day and millisecond
carbon.Parse("2020-01-01").SetDateMilli(2019, 2, 2, 999).ToString() // 2019-02-02 00:00:00.999 +0000 UTC
carbon.Parse("2020-01-01").SetDateMilli(2019, 2, 31, 999).ToString() // 2019-03-03 00:00:00.999 +0000 UTC
// Set year, month, day and microsecond
carbon.Parse("2020-01-01").SetDateMicro(2019, 2, 2, 999999).ToString() // 2019-02-02 00:00:00.999999 +0000 UTC
carbon.Parse("2020-01-01").SetDateMicro(2019, 2, 31, 999999).ToString() // 2019-03-03 00:00:00.999999 +0000 UTC
// Set year, month, day and nanosecond
carbon.Parse("2020-01-01").SetDateNano(2019, 2, 2, 999999999).ToString() // 2019-02-02 00:00:00.999999999 +0000 UTC
carbon.Parse("2020-01-01").SetDateNano(2019, 2, 31, 999999999).ToString() // 2019-03-03 00:00:00.999999999 +0000 UTC

// Set hour, minute and second
carbon.Parse("2020-01-01").SetTime(13, 14, 15).ToString() // 2020-01-01 13:14:15 +0000 UTC
carbon.Parse("2020-01-01").SetTime(13, 14, 90).ToString() // 2020-01-01 13:15:30 +0000 UTC
// Set hour, minute, second and millisecond
carbon.Parse("2020-01-01").SetTimeMilli(13, 14, 15, 999).ToString() // 2020-01-01 13:14:15.999 +0000 UTC
carbon.Parse("2020-01-01").SetTimeMilli(13, 14, 90, 999).ToString() // 2020-01-01 13:15:30.999 +0000 UTC
// Set hour, minute, second and microsecond
carbon.Parse("2020-01-01").SetTimeMicro(13, 14, 15, 999999).ToString() // 2020-01-01 13:14:15.999999 +0000 UTC
carbon.Parse("2020-01-01").SetTimeMicro(13, 14, 90, 999999).ToString() // 2020-01-01 13:15:30.999999 +0000 UTC
// Set hour, minute, second and nanosecond
carbon.Parse("2020-01-01").SetTimeNano(13, 14, 15, 999999999).ToString() // 2020-01-01 13:14:15.999999999 +0000 UTC
carbon.Parse("2020-01-01").SetTimeNano(13, 14, 90, 999999999).ToString() // 2020-01-01 13:15:30.999999999 +0000 UTC

// Set year
carbon.Parse("2020-02-29").SetYear(2021).ToDateString() // 2021-03-01
// Set year without overflowing month
carbon.Parse("2020-02-29").SetYearNoOverflow(2021).ToDateString() // 2021-02-28

// Set month
carbon.Parse("2020-01-31").SetMonth(2).ToDateString() // 2020-03-02
// Set month without overflowing month
carbon.Parse("2020-01-31").SetMonthNoOverflow(2).ToDateString() // 2020-02-29

// Set start day of the week
carbon.Parse("2020-08-02").SetWeekStartsAt(carbon.Sunday).Week() // 0
carbon.Parse("2020-08-02").SetWeekStartsAt(carbon.Monday).Week() // 6

// Set weekend days of the week
wd := []carbon.Weekday{
  carbon.Saturday, carbon.Sunday,
}
carbon.Parse("2025-04-11").SetWeekendDays(wd).IsWeekend() // false
carbon.Parse("2025-04-12").SetWeekendDays(wd).IsWeekend() // true
carbon.Parse("2025-04-13").SetWeekendDays(wd).IsWeekend() // true

// Set day
carbon.Parse("2019-08-05").SetDay(31).ToDateString() // 2020-08-31
carbon.Parse("2020-02-01").SetDay(31).ToDateString() // 2020-03-02

// Set hour
carbon.Parse("2020-08-05 13:14:15").SetHour(10).ToDateTimeString() // 2020-08-05 10:14:15
carbon.Parse("2020-08-05 13:14:15").SetHour(24).ToDateTimeString() // 2020-08-06 00:14:15

// Set minute
carbon.Parse("2020-08-05 13:14:15").SetMinute(10).ToDateTimeString() // 2020-08-05 13:10:15
carbon.Parse("2020-08-05 13:14:15").SetMinute(60).ToDateTimeString() // 2020-08-05 14:00:15

// Set second
carbon.Parse("2020-08-05 13:14:15").SetSecond(10).ToDateTimeString() // 2020-08-05 13:14:10
carbon.Parse("2020-08-05 13:14:15").SetSecond(60).ToDateTimeString() // 2020-08-05 13:15:00

// Set millisecond
carbon.Parse("2020-08-05 13:14:15").SetMillisecond(100).Millisecond() // 100
carbon.Parse("2020-08-05 13:14:15").SetMillisecond(999).Millisecond() // 999

// Set microsecond
carbon.Parse("2020-08-05 13:14:15").SetMicrosecond(100000).Microsecond() // 100000
carbon.Parse("2020-08-05 13:14:15").SetMicrosecond(999999).Microsecond() // 999999

// Set nanosecond
carbon.Parse("2020-08-05 13:14:15").SetNanosecond(100000000).Nanosecond() // 100000000
carbon.Parse("2020-08-05 13:14:15").SetNanosecond(999999999).Nanosecond() // 999999999
Getter
// Get total days of the year
carbon.Parse("2019-08-05 13:14:15").DaysInYear() // 365
carbon.Parse("2020-08-05 13:14:15").DaysInYear() // 366
// Get total days of the month
carbon.Parse("2020-02-01 13:14:15").DaysInMonth() // 29
carbon.Parse("2020-04-01 13:14:15").DaysInMonth() // 30
carbon.Parse("2020-08-01 13:14:15").DaysInMonth() // 31

// Get day of the year
carbon.Parse("2020-08-05 13:14:15").DayOfYear() // 218
// Get week of the year
carbon.Parse("2020-08-05 13:14:15").WeekOfYear() // 32
// Get day of the month
carbon.Parse("2020-08-05 13:14:15").DayOfMonth() // 5
// Get week of the month
carbon.Parse("2020-08-05 13:14:15").WeekOfMonth() // 1
// Get day of the week
carbon.Parse("2020-08-05 13:14:15").DayOfWeek() // 3

// Get current year, month, day, hour, minute and second
carbon.Parse("2020-08-05 13:14:15").DateTime() // 2020, 8, 5, 13, 14, 15
// Get current year, month, day, hour, minute, second and millisecond
carbon.Parse("2020-08-05 13:14:15").DateTimeMilli() // 2020, 8, 5, 13, 14, 15, 999
// Get current year, month, day, hour, minute, second and microsecond
carbon.Parse("2020-08-05 13:14:15").DateTimeMicro() // 2020, 8, 5, 13, 14, 15, 999999
// Get current year, month, day, hour, minute, second and nanosecond
carbon.Parse("2020-08-05 13:14:15").DateTimeNano() // 2020, 8, 5, 13, 14, 15, 999999999

// Get current year, month and day
carbon.Parse("2020-08-05 13:14:15.999999999").Date() // 2020, 8, 5
// Get current year, month, day and millisecond
carbon.Parse("2020-08-05 13:14:15.999999999").DateMilli() // 2020, 8, 5, 999
// Get current year, month, day and microsecond
carbon.Parse("2020-08-05 13:14:15.999999999").DateMicro() // 2020, 8, 5, 999999
// Get current year, month, day and nanosecond
carbon.Parse("2020-08-05 13:14:15.999999999").DateNano() // 2020, 8, 5, 999999999

// Get current hour, minute and second
carbon.Parse("2020-08-05 13:14:15.999999999").Time() // 13, 14, 15
// Get current hour, minute, second and millisecond
carbon.Parse("2020-08-05 13:14:15.999999999").TimeMilli() // 13, 14, 15, 999
// Get current hour, minute, second and microsecond
carbon.Parse("2020-08-05 13:14:15.999999999").TimeMicro() // 13, 14, 15, 999999
// Get current hour, minute, second and nanosecond
carbon.Parse("2020-08-05 13:14:15.999999999").TimeNano() // 13, 14, 15, 999999999

// Get current century
carbon.Parse("2020-08-05 13:14:15").Century() // 21
// Get current decade
carbon.Parse("2019-08-05 13:14:15").Decade() // 10
carbon.Parse("2021-08-05 13:14:15").Decade() // 20
// Get current year
carbon.Parse("2020-08-05 13:14:15").Year() // 2020
// Get current quarter
carbon.Parse("2020-08-05 13:14:15").Quarter() // 3
// Get current month
carbon.Parse("2020-08-05 13:14:15").Month() // 8
// Get current week(start from 0)
carbon.Parse("2020-08-02 13:14:15").Week() // 0
carbon.Parse("2020-08-02").SetWeekStartsAt(carbon.Sunday).Week() // 0
carbon.Parse("2020-08-02").SetWeekStartsAt(carbon.Monday).Week() // 6
// Get current day
carbon.Parse("2020-08-05 13:14:15").Day() // 5
// Get current hour
carbon.Parse("2020-08-05 13:14:15").Hour() // 13
// Get current minute
carbon.Parse("2020-08-05 13:14:15").Minute() // 14
// Get current second
carbon.Parse("2020-08-05 13:14:15").Second() // 15
// Get current millisecond
carbon.Parse("2020-08-05 13:14:15.999").Millisecond() // 999
// Get current microsecond
carbon.Parse("2020-08-05 13:14:15.999").Microsecond() // 999000
// Get current nanosecond
carbon.Parse("2020-08-05 13:14:15.999").Nanosecond() // 999000000

// Get timestamp with second precision
carbon.Parse("2020-08-05 13:14:15").Timestamp() // 1596604455
// Get timestamp with millisecond precision
carbon.Parse("2020-08-05 13:14:15").TimestampMilli() // 1596604455000
// Get timestamp with microsecond precision
carbon.Parse("2020-08-05 13:14:15").TimestampMicro() // 1596604455000000
// Get timestamp with nanosecond precision
carbon.Parse("2020-08-05 13:14:15").TimestampNano() // 1596604455000000000

// Get timezone location
carbon.SetTimezone(carbon.PRC).Timezone() // PRC
carbon.SetTimezone(carbon.Tokyo).Timezone() // Asia/Tokyo

// Get timezone name
carbon.SetTimezone(carbon.PRC).ZoneName() // CST
carbon.SetTimezone(carbon.Tokyo).ZoneName() // JST

// Get timezone offset seconds from the UTC timezone
carbon.SetTimezone(carbon.PRC).ZoneOffset() // 28800
carbon.SetTimezone(carbon.Tokyo).ZoneOffset() // 32400

// Get locale name
carbon.Now().SetLocale("en").Locale() // en
carbon.Now().SetLocale("zh-CN").Locale() // zh-CN

// Get constellation name
carbon.Now().Constellation() // Leo
carbon.Now().SetLocale("en").Constellation() // Leo
carbon.Now().SetLocale("zh-CN").Constellation() // 狮子座

// Get season name
carbon.Now().Season() // Summer
carbon.Now().SetLocale("en").Season() // Summer
carbon.Now().SetLocale("zh-CN").Season() // 夏季

// Get start day of the week
carbon.SetWeekStartsAt(carbon.Sunday).WeekStartsAt() // Sunday
carbon.SetWeekStartsAt(carbon.Monday).WeekStartsAt() // Monday

// Get end day of the week
carbon.SetWeekStartsAt(carbon.Sunday).WeekEndsAt() // Saturday
carbon.SetWeekStartsAt(carbon.Monday).WeekEndsAt() // Sunday

// Get current layout
carbon.Parse("now").CurrentLayout() // "2006-01-02 15:04:05"
carbon.ParseByLayout("2020-08-05", DateLayout).CurrentLayout() // "2006-01-02"

// Get current age
carbon.Parse("2002-01-01 13:14:15").Age() // 17
carbon.Parse("2002-12-31 13:14:15").Age() // 18
Output
// Output datetime format string
carbon.Parse("2020-08-05 13:14:15").ToDateTimeString() // 2020-08-05 13:14:15
// Output datetime with millisecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToDateTimeMilliString() // 2020-08-05 13:14:15.999
// Output datetime with microsecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToDateTimeMicroString() // 2020-08-05 13:14:15.999999
// Output datetime with nanosecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToDateTimeNanoString() // 2020-08-05 13:14:15.999999999

// Output short datetime format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToShortDateTimeString() // 20200805131415
// Output short datetime with millisecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToShortDateTimeMilliString() // 20200805131415.999
// Output short datetime with microsecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToShortDateTimeMicroString() // 20200805131415.999999
// Output short datetime with nanosecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToShortDateTimeNanoString() // 20200805131415.999999999

// Output date format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToDateString() // 2020-08-05
// Output date with millisecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToDateMilliString() // 2020-08-05.999
// Output date with microsecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToDateMicroString() // 2020-08-05.999999
// Output date with nanosecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToDateNanoString() // 2020-08-05.999999999

// Output short date format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortDateString() // 20200805
// Output short date with millisecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortDateMilliString() // 20200805.999
// Output short date with microsecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortDateMicroString() // 20200805.999999
// Output short date with nanosecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortDateNanoString() // 20200805.999999999

// Output time format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToTimeString() // 13:14:15
// Output time with millisecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToTimeMilliString() // 13:14:15.999
// Output time with microsecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToTimeMicroString() // 13:14:15.999999
// Output time with nanosecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToTimeNanoString() // 13:14:15.999999999

// Output short time format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortTimeString() // 131415
// Output short time with millisecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortTimeMilliString() // 131415.999
// Output short time with microsecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortTimeMicroString() // 131415.999999
// Output short time with nanosecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToShortTimeNanoString() // 131415.999999999

// Output Ansic format string
carbon.Parse("2020-08-05 13:14:15").ToAnsicString() // Wed Aug  5 13:14:15 2020
// Output Atom format string
carbon.Parse("2020-08-05 13:14:15").ToAtomString() // 2020-08-05T13:14:15+08:00
// Output Unix date format string
carbon.Parse("2020-08-05 13:14:15").ToUnixDateString() // Wed Aug  5 13:14:15 UTC 2020
// Output Ruby date format string
carbon.Parse("2020-08-05 13:14:15").ToRubyDateString() // Wed Aug 05 13:14:15 +0000 2020
// Output Kitchen format string
carbon.Parse("2020-08-05 13:14:15").ToKitchenString() // 1:14PM
// Output Cookie format string
carbon.Parse("2020-08-05 13:14:15").ToCookieString() // Wednesday, 05-Aug-2020 13:14:15 UTC
// Output day, date and time format string
carbon.Parse("2020-08-05 13:14:15").ToDayDateTimeString() // Wed, Aug 5, 2020 1:14 PM
// Output RSS format string
carbon.Parse("2020-08-05 13:14:15").ToRssString() // Wed, 05 Aug 2020 13:14:15 +0000
// Output W3C format string
carbon.Parse("2020-08-05 13:14:15").ToW3cString() // 2020-08-05T13:14:15Z

// Output ISO8601 format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601String() // 2020-08-05T13:14:15+00:00
// Output ISO8601 with millisecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601MilliString() // 2020-08-05T13:14:15.999+00:00
// Output ISO8601 with microsecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601MicroString() // 2020-08-05T13:14:15.999999+00:00
// Output ISO8601 with nanosecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601NanoString() // 2020-08-05T13:14:15.999999999+00:00
// Output ISO8601Zulu format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601ZuluString() // 2020-08-05T13:14:15Z
// Output ISO8601Zulu with millisecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601ZuluMilliString() // 2020-08-05T13:14:15.999Z
// Output ISO8601Zulu with microsecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601ZuluMicroString() // 2020-08-05T13:14:15.999999Z
// Output ISO8601Zulu with nanosecond format string
carbon.Parse("2020-08-05 13:14:15.999999999").ToIso8601ZuluNanoString() // 2020-08-05T13:14:15.999999999Z

// Output RFC822 format string
carbon.Parse("2020-08-05 13:14:15").ToRfc822String() // 05 Aug 20 13:14 UTC
// Output RFC822Z format string
carbon.Parse("2020-08-05 13:14:15").ToRfc822zString() // 05 Aug 20 13:14 +0000
// Output RFC850 format string
carbon.Parse("2020-08-05 13:14:15").ToRfc850String() // Wednesday, 05-Aug-20 13:14:15 UTC
// Output RFC1036 format string
carbon.Parse("2020-08-05 13:14:15").ToRfc1036String() // Wed, 05 Aug 20 13:14:15 +0000
// Output RFC1123 format string
carbon.Parse("2020-08-05 13:14:15").ToRfc1123String() // Wed, 05 Aug 2020 13:14:15 UTC
// Output RFC1123Z format string
carbon.Parse("2020-08-05 13:14:15").ToRfc1123zString() // Wed, 05 Aug 2020 13:14:15 +0000
// Output RFC2822 format string
carbon.Parse("2020-08-05 13:14:15").ToRfc2822String() // Wed, 05 Aug 2020 13:14:15 +0000
// Output RFC7231 format string
carbon.Parse("2020-08-05 13:14:15").ToRfc7231String() // Wed, 05 Aug 2020 13:14:15 UTC

// Output RFC3339 format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToRfc3339String() // 2020-08-05T05:14:15Z
// Output RFC3339 with millisecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToRfc3339MilliString() // 2020-08-05T05:14:15.999Z
// Output RFC3339 with microsecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToRfc3339MicroString() // 2020-08-05T05:14:15.999999Z
// Output RFC3339 with nanosecond format string
carbon.Parse("2020-08-05T13:14:15.999999999+08:00").ToRfc3339NanoString() // 2020-08-05T05:14:15.999999999Z

// Output datetime format string
fmt.Printf("%s", carbon.Parse("2020-08-05 13:14:15")) // 2020-08-05 13:14:15

// Output "2006-01-02 15:04:05.999999999 -0700 MST" format string
carbon.Parse("2020-08-05 13:14:15").ToString() // 2020-08-05 13:14:15 +0000 UTC

// Output "Jan 2, 2006" format string
carbon.Parse("2020-08-05 13:14:15").ToFormattedDateString() // Aug 5, 2020
// Output "Mon, Jan 2, 2006" format string
carbon.Parse("2020-08-05 13:14:15").ToFormattedDayDateString() // Wed, Aug 5, 2020

// Output string by layout
carbon.Parse("2020-08-05 13:14:15").Layout(carbon.ISO8601Layout) // 2020-08-05T13:14:15+00:00
carbon.Parse("2020-08-05 13:14:15").Layout("20060102150405") // 20200805131415
carbon.Parse("2020-08-05 13:14:15").Layout("2006年01月02日 15时04分05秒") // 2020年08月05日 13时14分15秒
carbon.Parse("2020-08-05 13:14:15").Layout("It is 2006-01-02 15:04:05") // It is 2020-08-05 13:14:15

// Output string by format
carbon.Parse("2020-08-05 13:14:15").Format("YmdHis") // 20200805131415
carbon.Parse("2020-08-05 13:14:15").Format("Y年m月d日 H时i分s秒") // 2020年08月05日 13时14分15秒
carbon.Parse("2020-08-05 13:14:15").Format("l jK \\o\\f F Y h:i:s A") // Wednesday 5th of August 2020 01:14:15 PM
carbon.Parse("2020-08-05 13:14:15").Format("\\I\\t \\i\\s Y-m-d H:i:s") // It is 2020-08-05 13:14:15

Refer to Format sign table for more supported format signs

Constellation
// Get constellation name
carbon.Parse("2020-08-05 13:14:15").Constellation() // Leo

// Whether is Aries
carbon.Parse("2020-08-05 13:14:15").IsAries() // false
// Whether is Taurus
carbon.Parse("2020-08-05 13:14:15").IsTaurus() // false
// Whether is Gemini
carbon.Parse("2020-08-05 13:14:15").IsGemini() // false
// Whether is Cancer
carbon.Parse("2020-08-05 13:14:15").IsCancer() // false
// Whether is Leo
carbon.Parse("2020-08-05 13:14:15").IsLeo() // true
// Whether is Virgo
carbon.Parse("2020-08-05 13:14:15").IsVirgo() // false
// Whether is Libra
carbon.Parse("2020-08-05 13:14:15").IsLibra() // false
// Whether is Scorpio
carbon.Parse("2020-08-05 13:14:15").IsScorpio() // false
// Whether is Sagittarius
carbon.Parse("2020-08-05 13:14:15").IsSagittarius() // false
// Whether is Capricorn
carbon.Parse("2020-08-05 13:14:15").IsCapricorn() // false
// Whether is Aquarius
carbon.Parse("2020-08-05 13:14:15").IsAquarius() // false
// Whether is Pisces
carbon.Parse("2020-08-05 13:14:15").IsPisces() // false
Season

According to the meteorological division method, March to May is spring, June to August is summer, September to November is autumn, and December to February is winter

// Get season name
carbon.Parse("2020-08-05 13:14:15").Season() // Summer

// Start of the season
carbon.Parse("2020-08-05 13:14:15").StartOfSeason().ToDateTimeString() // 2020-06-01 00:00:00
// End of the season
carbon.Parse("2020-08-05 13:14:15").EndOfSeason().ToDateTimeString() // 2020-08-31 23:59:59

// Whether is spring
carbon.Parse("2020-08-05 13:14:15").IsSpring() // false
// Whether is summer
carbon.Parse("2020-08-05 13:14:15").IsSummer() // true
// Whether is autumn
carbon.Parse("2020-08-05 13:14:15").IsAutumn() // false
// Whether is winter
carbon.Parse("2020-08-05 13:14:15").IsWinter() // false
JSON
Builtin type
type User struct {
  Date      carbon.LayoutType[carbon.Date]      `json:"date"`
  DateMilli carbon.LayoutType[carbon.DateMilli] `json:"date_milli"`
  DateMicro carbon.LayoutType[carbon.DateMicro] `json:"date_micro"`
  DateNano  carbon.LayoutType[carbon.DateNano]  `json:"date_nano"`
  
  Time      carbon.LayoutType[carbon.Time]      `json:"time"`
  TimeMilli carbon.LayoutType[carbon.TimeMilli] `json:"time_milli"`
  TimeMicro carbon.LayoutType[carbon.TimeMicro] `json:"time_micro"`
  TimeNano  carbon.LayoutType[carbon.TimeNano]  `json:"time_nano"`
  
  DateTime      carbon.FormatType[carbon.DateTime]      `json:"date_time"`
  DateTimeMilli carbon.FormatType[carbon.DateTimeMilli] `json:"date_time_milli"`
  DateTimeMicro carbon.FormatType[carbon.DateTimeMicro] `json:"date_time_micro"`
  DateTimeNano  carbon.FormatType[carbon.DateTimeNano]  `json:"date_time_nano"`
  
  Timestamp      carbon.TimestampType[carbon.Timestamp]      `json:"timestamp"`
  TimestampMilli carbon.TimestampType[carbon.TimestampMilli] `json:"timestamp_milli"`
  TimestampMicro carbon.TimestampType[carbon.TimestampMicro] `json:"timestamp_micro"`
  TimestampNano  carbon.TimestampType[carbon.TimestampNano]  `json:"timestamp_nano"`
}

var user User

c := carbon.Parse("2020-08-05 13:14:15.999999999")

user.Date      = carbon.NewLayoutType[carbon.Date](c)
user.DateMilli = carbon.NewLayoutType[carbon.DateMilli](c)
user.DateMicro = carbon.NewLayoutType[carbon.DateMicro](c)
user.DateNano  = carbon.NewLayoutType[carbon.DateNano](c)

user.Time      = carbon.NewLayoutType[carbon.Time](c)
user.TimeMilli = carbon.NewLayoutType[carbon.TimeMilli](c)
user.TimeMicro = carbon.NewLayoutType[carbon.TimeMicro](c)
user.TimeNano  = carbon.NewLayoutType[carbon.TimeNano](c)

user.DateTime      = carbon.NewFormatType[carbon.DateTime](c)
user.DateTimeMilli = carbon.NewFormatType[carbon.DateTimeMilli](c)
user.DateTimeMicro = carbon.NewFormatType[carbon.DateTimeMicro](c)
user.DateTimeNano  = carbon.NewFormatType[carbon.DateTimeNano](c)

user.Timestamp      = carbon.NewTimestampType[carbon.Timestamp](c)
user.TimestampMilli = carbon.NewTimestampType[carbon.TimestampMilli](c)
user.TimestampMicro = carbon.NewTimestampType[carbon.TimestampMicro](c)
user.TimestampNano  = carbon.NewTimestampType[carbon.TimestampNano](c)

data, err := json.Marshal(&user)
if err != nil {
  // Error handle...
  log.Fatal(err)
}
fmt.Printf("%s\n", data)
// Output
{
  "date": "2020-08-05",
  "date_milli": "2020-08-05.999",
  "date_micro": "2020-08-05.999999",
  "date_nano": "2020-08-05.999999999",
  "time": "13:14:15",
  "time_milli": "13:14:15.999",
  "time_micro": "13:14:15.999999",
  "time_nano": "13:14:15.999999999",
  "date_time": "2020-08-05 13:14:15",
  "date_time_milli": "2020-08-05 13:14:15.999",
  "date_time_micro": "2020-08-05 13:14:15.999999",
  "date_time_nano": "2020-08-05 13:14:15.999999999",
  "timestamp": 1596633255,
  "timestamp_milli": 1596633255999,
  "timestamp_micro": 1596633255999999,
  "timestamp_nano": 1596633255999999999
}

var person User
err := json.Unmarshal(data, &person)
if err != nil {
  // Error handle...
  log.Fatal(err)
}

fmt.Printf("person: %+v\n", person)
// Output
person: {Date:2020-08-05 DateMilli:2020-08-05.999 DateMicro:2020-08-05.999999 DateNano:2020-08-05.999999999 Time:13:14:15 TimeMilli:13:14:15.999 TimeMicro:13:14:15.999999 TimeNano:13:14:15.999999999 DateTime:2020-08-05 13:14:15 DateTimeMilli:2020-08-05 13:14:15.999 DateTimeMicro:2020-08-05 13:14:15.999999 DateTimeNano:2020-08-05 13:14:15.999999999 Timestamp:1596633255 TimestampMilli:1596633255999 TimestampMicro:1596633255999999 TimestampNano:1596633255999999999}
Customize type
type RFC3339Layout string
func (t CustomerLayout) SetLayout() string {
  return carbon.RFC3339Layout
}

type ISO8601Format string
func (t CustomerFormat) SetFormat() string {
  return carbon.ISO8601Format
}

type User struct {
  Customer1 carbon.LayoutType[RFC3339Layout] `json:"customer1"`
  Customer2 carbon.FormatType[ISO8601Format] `json:"customer2"`
}

var user User

c := carbon.Parse("2020-08-05 13:14:15")

user.Customer1 = carbon.NewLayoutType[RFC3339Layout](c)
user.Customer2 = carbon.NewFormatType[ISO8601Format](c)

data, err := json.Marshal(&user)
if err != nil {
  // Error handle...
  log.Fatal(err)
}
fmt.Printf("%s\n", data)
// Output
{"customer1":"2020-08-05T13:14:15Z","customer2":"2020-08-05T13:14:15+00:00"}

var person User
err := json.Unmarshal(data, &person)
if err != nil {
  // Error handle...
  log.Fatal(err)
}

fmt.Printf("person: %+v\n", person)
// Output
person: {Customer1:2020-08-05T13:14:15Z Customer2:2020-08-05T13:14:15+00:00}
Calendar

The following calendars are supported

i18n

The following languages are supported(according to the order of translation time)

The following methods are supported

  • Constellation():get constellation name, like Aries
  • Season():get season name, like Spring
  • DiffForHumans():get the difference with human-readable format string, like 1 year from now
  • ToMonthString():output month format string, like January
  • ToShortMonthString():output short month format string, like Jan
  • ToWeekString():output week format string, like Sunday
  • ToShortWeekString():output short week format string, like Sun
Set locale
lang := carbon.NewLanguage()
lang.SetLocale("en")

carbon.SetTestNow(carbon.Parse("2020-08-05 13:14:15"))
now := carbon.Now().SetLanguage(lang)

now.Copy().AddHours(1).DiffForHumans() // 1 hour from now
now.Copy().AddHours(1).ToMonthString() // August
now.Copy().AddHours(1).ToShortMonthString() // Aug
now.Copy().AddHours(1).ToWeekString() // Wednesday
now.Copy().AddHours(1).ToShortWeekString() // Wed
now.Copy().AddHours(1).Constellation() // Leo
now.Copy().AddHours(1).Season() // Summer
Reset some resources(the rests still translate from the given locale)
lang := carbon.NewLanguage()

resources := map[string]string {
  "hour": "%dh",
}
lang.SetLocale("en").SetResources(resources)

carbon.SetTestNow(carbon.Parse("2020-08-05 13:14:15"))
now := carbon.Now().SetLanguage(lang)

now.Copy().AddYears(1).DiffForHumans() // 1 year from now
now.Copy().AddHours(1).DiffForHumans() // 1h from now
now.Copy().ToMonthString() // August
now.Copy().ToShortMonthString() // Aug
now.Copy().ToWeekString() // Tuesday
now.Copy().ToShortWeekString() // Tue
now.Copy().Constellation() // Leo
now.Copy().Season() // Summer
Reset all resources
lang := carbon.NewLanguage()
resources := map[string]string {
  "months": "january|february|march|april|may|june|july|august|september|october|november|december",
  "short_months": "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec",
  "weeks": "sunday|monday|tuesday|wednesday|thursday|friday|saturday",
  "short_weeks": "sun|mon|tue|wed|thu|fri|sat",
  "seasons": "spring|summer|autumn|winter",
  "constellations": "aries|taurus|gemini|cancer|leo|virgo|libra|scorpio|sagittarius|capricornus|aquarius|pisce",
  "year": "1 yr|%d yrs",
  "month": "1 mo|%d mos",
  "week": "%dw",
  "day": "%dd",
  "hour": "%dh",
  "minute": "%dm",
  "second": "%ds",
  "now": "just now",
  "ago": "%s ago",
  "from_now": "in %s",
  "before": "%s before",
  "after": "%s after",
}
lang.SetResources(resources)

carbon.SetTestNow(carbon.Parse("2020-08-05 13:14:15"))
now := carbon.Now().SetLanguage(lang)

now.Copy().AddYears(1).DiffForHumans() // in 1 yr
now.Copy().AddHours(1).DiffForHumans() // in 1h
now.Copy().ToMonthString() // august
now.Copy().ToShortMonthString() // aug
now.Copy().ToWeekString() // tuesday
now.Copy().ToShortWeekString() // tue
now.Copy().Constellation() // leo
now.Copy().Season() // summer
Error
c := carbon.Parse("2020-08-05").SetTimezone("xxx")
if c.HasError() {
  // Error handle...
  log.Fatal(c.Error)
}
// Output
timezone "xxx" is invalid, please see the file "$GOROOT/lib/time/zoneinfo.zip" for all valid timezones
Appendix
sign desc length range example
d Day of the month, padded to 2 2 01-31 02
D Day of the week, as an abbreviate localized string 3 Mon-Sun Mon
j Day of the month, no padding - 1-31 2
K English ordinal suffix for the day of the month, 2 characters. Eg: st, nd, rd or th. Works well with j 2 st/nd/rd/th th
l Day of the week, as an unabbreviated localized string - Monday-Sunday Monday
F Month as an unabbreviated localized string - January-December January
m Month, padded to 2 2 01-12 01
M Month as an abbreviated localized string 3 Jan-Dec Jan
n Month, no padding - 1-12 1
Y Four-digit year 4 0000-9999 2006
y Two-digit year 2 00-99 06
a Lowercase morning or afternoon sign 2 am/pm pm
A Uppercase morning or afternoon sign 2 AM/PM PM
g Hour in 12-hour format, no padding - 1-12 3
G Hour in 24-hour format, no padding - 0-23 15
h Hour in 12-hour format, padded to 2 2 00-11 03
H Hour in 24-hour format, padded to 2 2 00-23 15
i Minute, padded to 2 2 01-59 04
s Second, padded to 2 2 01-59 05
O Difference to Greenwich time (GMT) without colon between hours and minutes - - -0700
P Difference to Greenwich time (GMT) with colon between hours and minutes - - -07:00
Z Zone name - - MST
W week of the year, padded to 2 2 01-52 01
N day of the week, padded to 2 2 01-07 02
L Whether it's a leap year 1 0-1 0
S Unix timestamp with second - - 1596604455
U Unix timestamp with millisecond precision - - 1596604455666
V Unix timestamp with microsecond precision - - 1596604455666666
X Unix timestamp with nanosecond precision - - 1596604455666666666
u Millisecond - 1-999 999
v Microsecond - 1-999999 999999
x Nanosecond - 1-999999999 999999999
w Day of the week 1 0-6 1
t Total days of the month 2 28-31 31
z Time zone - - Asia/Shanghai
o Time offset - - 28800
q Quarter 1 1-4 1
c Century - 0-99 21
FAQ

1、What is the difference between v2.5.x and v2.6.x?

v2.5.x and below use value passing, while v2.6.x and above use pointer passing, and use generics to implement custom JSON encoding output format. Both versions will be maintained for a long time, but it is strongly recommended to use v2.6.x and above.

2、Timezone error when deploying on Windows system

If the window system does not have the golang environment installed, the GOROOT/lib/time/zoneinfo.zip: no such file or directory exception will be reported during deployment. The reason is that the window system does not have a built-in time zone file. You only need to manually download and specify the zoneinfo.zip path, such as go/lib/time/zoneinfo.zip

os.Setenv("ZONEINFO", "./go/lib/time/zoneinfo.zip")

3、Timezone error when deploying on Docker container

If the docker container does not have the golang environment installed, the open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory exception will be reported during deployment. You only need to copy zoneinfo.zip to the container, that is, add it to the Dockerfile

COPY ./zoneinfo.zip /usr/local/go /lib/time/zoneinfo.zip
References
Contributors

Thanks to all the following who contributed to Carbon:

Sponsors

Carbon is a non-commercial open source project. If you want to support Carbon, you can buy a cup of coffee for developer.

Thanks

Carbon had been being developed with GoLand under the free JetBrains Open Source license, I would like to express my thanks here.

JetBrains

Documentation

Overview

Package carbon is a simple, semantic and developer-friendly time package for golang.

Index

Examples

Constants

View Source
const (
	Local = "Local" // 本地时间
	UTC   = "UTC"   // 世界协调时间

	CET  = "CET"  // 欧洲中部标准时间
	EET  = "EET"  // 欧洲东部标准时间
	EST  = "EST"  // 美国东部标准时间
	GMT  = "GMT"  // 格林尼治标准时间
	MET  = "MET"  // 欧洲中部标准时间
	MST  = "MST"  // 美国山地标准时间
	UCT  = "MST"  // 世界协调时间
	WET  = "WET"  // 欧洲西部标准时间
	Zulu = "Zulu" // 世界协调时间

	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"    // 土耳其

	Shanghai   = "Asia/Shanghai"       // 上海
	Chongqing  = "Asia/Chongqing"      // 重庆
	Harbin     = "Asia/Harbin"         // 哈尔滨
	Urumqi     = "Asia/Urumqi"         // 乌鲁木齐
	HongKong   = "Asia/Hong_Kong"      // 香港
	Macao      = "Asia/Macao"          // 澳门
	Taipei     = "Asia/Taipei"         // 台北
	Tokyo      = "Asia/Tokyo"          // 东京
	HoChiMinh  = "Asia/Ho_Chi_Minh"    // 胡志明
	Hanoi      = "Asia/Hanoi"          // 河内
	Saigon     = "Asia/Saigon"         // 西贡
	Seoul      = "Asia/Seoul"          // 首尔
	Pyongyang  = "Asia/Pyongyang"      // 平壤
	Bangkok    = "Asia/Bangkok"        // 曼谷
	Dubai      = "Asia/Dubai"          // 迪拜
	Qatar      = "Asia/Qatar"          // 卡塔尔
	Bangalore  = "Asia/Bangalore"      // 班加罗尔
	Kolkata    = "Asia/Kolkata"        // 加尔各答
	Mumbai     = "Asia/Mumbai"         // 孟买
	MexicoCity = "America/Mexico_City" // 墨西哥
	NewYork    = "America/New_York"    // 纽约
	LosAngeles = "America/Los_Angeles" // 洛杉矶
	Chicago    = "America/Chicago"     // 芝加哥
	SaoPaulo   = "America/Sao_Paulo"   // 圣保罗
	Moscow     = "Europe/Moscow"       // 莫斯科
	London     = "Europe/London"       // 伦敦
	Berlin     = "Europe/Berlin"       // 柏林
	Paris      = "Europe/Paris"        // 巴黎
	Rome       = "Europe/Rome"         // 罗马
	Sydney     = "Australia/Sydney"    // 悉尼
	Melbourne  = "Australia/Melbourne" // 墨尔本
	Darwin     = "Australia/Darwin"    // 达尔文
)

timezone constants 时区常量

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

month constants 月份常量

View Source
const (
	Aries       = "Aries"       // 白羊座
	Taurus      = "Taurus"      // 金牛座
	Gemini      = "Gemini"      // 双子座
	Cancer      = "Cancer"      // 巨蟹座
	Leo         = "Leo"         // 狮子座
	Virgo       = "Virgo"       // 处女座
	Libra       = "Libra"       // 天秤座
	Scorpio     = "Scorpio"     // 天蝎座
	Sagittarius = "Sagittarius" // 射手座
	Capricorn   = "Capricorn"   // 摩羯座
	Aquarius    = "Aquarius"    // 水瓶座
	Pisces      = "Pisces"      // 双鱼座
)

constellation constants 星座常量

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

week constants 星期常量

View Source
const (
	Spring = "Spring" // 春季
	Summer = "Summer" // 夏季
	Autumn = "Autumn" // 秋季
	Winter = "Winter" // 冬季
)

season constants 季节常量

View Source
const (
	EpochYear          = 1970   // UNIX 纪元年
	YearsPerMillennium = 1000   // 每千年1000年
	YearsPerCentury    = 100    // 每世纪100年
	YearsPerDecade     = 10     // 每十年10年
	QuartersPerYear    = 4      // 每年4个季度
	MonthsPerYear      = 12     // 每年12月
	MonthsPerQuarter   = 3      // 每季度3月
	WeeksPerNormalYear = 52     // 每常规年52周
	WeeksPerLongYear   = 53     // 每长年53周
	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     = 604800 // 每周604800秒
	SecondsPerDay      = 86400  // 每天86400秒
	SecondsPerHour     = 3600   // 每小时3600秒
	SecondsPerMinute   = 60     // 每分钟60秒
)

number constants 数字常量

View Source
const (
	AtomLayout     = RFC3339Layout
	ANSICLayout    = time.ANSIC
	CookieLayout   = "Monday, 02-Jan-2006 15:04:05 MST"
	KitchenLayout  = time.Kitchen
	RssLayout      = time.RFC1123Z
	RubyDateLayout = time.RubyDate
	UnixDateLayout = time.UnixDate
	W3cLayout      = RFC3339Layout

	RFC1036Layout      = "Mon, 02 Jan 06 15:04:05 -0700"
	RFC1123Layout      = time.RFC1123
	RFC1123ZLayout     = time.RFC1123Z
	RFC2822Layout      = time.RFC1123Z
	RFC3339Layout      = "2006-01-02T15:04:05Z07:00"
	RFC3339MilliLayout = "2006-01-02T15:04:05.999Z07:00"
	RFC3339MicroLayout = "2006-01-02T15:04:05.999999Z07:00"
	RFC3339NanoLayout  = "2006-01-02T15:04:05.999999999Z07:00"
	RFC7231Layout      = "Mon, 02 Jan 2006 15:04:05 MST"
	RFC822Layout       = time.RFC822
	RFC822ZLayout      = time.RFC822Z
	RFC850Layout       = time.RFC850

	ISO8601Layout      = "2006-01-02T15:04:05-07:00"
	ISO8601MilliLayout = "2006-01-02T15:04:05.999-07:00"
	ISO8601MicroLayout = "2006-01-02T15:04:05.999999-07:00"
	ISO8601NanoLayout  = "2006-01-02T15:04:05.999999999-07:00"

	ISO8601ZuluLayout      = "2006-01-02T15:04:05Z"
	ISO8601ZuluMilliLayout = "2006-01-02T15:04:05.999Z"
	ISO8601ZuluMicroLayout = "2006-01-02T15:04:05.999999Z"
	ISO8601ZuluNanoLayout  = "2006-01-02T15:04:05.999999999Z"

	FormattedDateLayout    = "Jan 2, 2006"
	FormattedDayDateLayout = "Mon, Jan 2, 2006"

	DayDateTimeLayout        = "Mon, Jan 2, 2006 3:04 PM"
	DateTimeLayout           = "2006-01-02 15:04:05"
	DateTimeMilliLayout      = "2006-01-02 15:04:05.999"
	DateTimeMicroLayout      = "2006-01-02 15:04:05.999999"
	DateTimeNanoLayout       = "2006-01-02 15:04:05.999999999"
	ShortDateTimeLayout      = "20060102150405"
	ShortDateTimeMilliLayout = "20060102150405.999"
	ShortDateTimeMicroLayout = "20060102150405.999999"
	ShortDateTimeNanoLayout  = "20060102150405.999999999"

	DateLayout           = "2006-01-02"
	DateMilliLayout      = "2006-01-02.999"
	DateMicroLayout      = "2006-01-02.999999"
	DateNanoLayout       = "2006-01-02.999999999"
	ShortDateLayout      = "20060102"
	ShortDateMilliLayout = "20060102.999"
	ShortDateMicroLayout = "20060102.999999"
	ShortDateNanoLayout  = "20060102.999999999"

	TimeLayout           = "15:04:05"
	TimeMilliLayout      = "15:04:05.999"
	TimeMicroLayout      = "15:04:05.999999"
	TimeNanoLayout       = "15:04:05.999999999"
	ShortTimeLayout      = "150405"
	ShortTimeMilliLayout = "150405.999"
	ShortTimeMicroLayout = "150405.999999"
	ShortTimeNanoLayout  = "150405.999999999"

	TimestampLayout      = "unix"
	TimestampMilliLayout = "unixMilli"
	TimestampMicroLayout = "unixMicro"
	TimestampNanoLayout  = "unixNano"
)

layout constants 布局模板常量

View Source
const (
	AtomFormat     = "Y-m-d\\TH:i:sR"
	ANSICFormat    = "D M  j H:i:s Y"
	CookieFormat   = "l, d-M-Y H:i:s Z"
	KitchenFormat  = "g:iA"
	RssFormat      = "D, d M Y H:i:s O"
	RubyDateFormat = "D M d H:i:s O Y"
	UnixDateFormat = "D M  j H:i:s Z Y"

	RFC1036Format      = "D, d M y H:i:s O"
	RFC1123Format      = "D, d M Y H:i:s Z"
	RFC1123ZFormat     = "D, d M Y H:i:s O"
	RFC2822Format      = "D, d M Y H:i:s O"
	RFC3339Format      = "Y-m-d\\TH:i:sR"
	RFC3339MilliFormat = "Y-m-d\\TH:i:s.uR"
	RFC3339MicroFormat = "Y-m-d\\TH:i:s.vR"
	RFC3339NanoFormat  = "Y-m-d\\TH:i:s.xR"
	RFC7231Format      = "D, d M Y H:i:s Z"
	RFC822Format       = "d M y H:i Z"
	RFC822ZFormat      = "d M y H:i O"
	RFC850Format       = "l, d-M-y H:i:s Z"

	ISO8601Format      = "Y-m-d\\TH:i:sP"
	ISO8601MilliFormat = "Y-m-d\\TH:i:s.uP"
	ISO8601MicroFormat = "Y-m-d\\TH:i:s.vP"
	ISO8601NanoFormat  = "Y-m-d\\TH:i:s.xP"

	ISO8601ZuluFormat      = "Y-m-d\\TH:i:s\\Z"
	ISO8601ZuluMilliFormat = "Y-m-d\\TH:i:s.u\\Z"
	ISO8601ZuluMicroFormat = "Y-m-d\\TH:i:s.v\\Z"
	ISO8601ZuluNanoFormat  = "Y-m-d\\TH:i:s.x\\Z"

	FormattedDateFormat    = "M j, Y"
	FormattedDayDateFormat = "D, M j, Y"

	DayDateTimeFormat        = "D, M j, Y g:i A"
	DateTimeFormat           = "Y-m-d H:i:s"
	DateTimeMilliFormat      = "Y-m-d H:i:s.u"
	DateTimeMicroFormat      = "Y-m-d H:i:s.v"
	DateTimeNanoFormat       = "Y-m-d H:i:s.x"
	ShortDateTimeFormat      = "YmdHis"
	ShortDateTimeMilliFormat = "YmdHis.u"
	ShortDateTimeMicroFormat = "YmdHis.v"
	ShortDateTimeNanoFormat  = "YmdHis.x"

	DateFormat           = "Y-m-d"
	DateMilliFormat      = "Y-m-d.u"
	DateMicroFormat      = "Y-m-d.v"
	DateNanoFormat       = "Y-m-d.x"
	ShortDateFormat      = "Ymd"
	ShortDateMilliFormat = "Ymd.u"
	ShortDateMicroFormat = "Ymd.v"
	ShortDateNanoFormat  = "Ymd.x"

	TimeFormat           = "H:i:s"
	TimeMilliFormat      = "H:i:s.u"
	TimeMicroFormat      = "H:i:s.v"
	TimeNanoFormat       = "H:i:s.x"
	ShortTimeFormat      = "His"
	ShortTimeMilliFormat = "His.u"
	ShortTimeMicroFormat = "His.v"
	ShortTimeNanoFormat  = "His.x"

	TimestampFormat      = "S"
	TimestampMilliFormat = "U"
	TimestampMicroFormat = "V"
	TimestampNanoFormat  = "X"
)

format constants 格式模板常量

View Source
const (
	PrecisionSecond      = 9
	PrecisionMillisecond = 999
	PrecisionMicrosecond = 999999
	PrecisionNanosecond  = 999999999
)

timestamp precision constants 时间戳精度常量

View Source
const Version = "2.6.3"

Version current version 当前版本号

Variables

View Source
var (
	// DefaultLayout default layout
	// 默认布局模板
	DefaultLayout = DateTimeLayout

	// DefaultTimezone default timezone
	// 默认时区
	DefaultTimezone = UTC

	// DefaultLocale default language locale
	// 默认语言区域
	DefaultLocale = "en"

	// DefaultWeekStartsAt default start date of the week
	// 默认一周开始日期
	DefaultWeekStartsAt = Monday

	// DefaultWeekendDays default weekend days of the week
	// 默认周末日期
	DefaultWeekendDays = []Weekday{
		Saturday, Sunday,
	}
)
View Source
var (
	// ErrFailedParse failed to parse error.
	// 失败的解析错误
	ErrFailedParse = func(value any) error {
		return fmt.Errorf("failed to parse %v as carbon", value)
	}

	// ErrFailedScan failed to scan error.
	// 失败的扫描错误
	ErrFailedScan = func(value any) error {
		return fmt.Errorf("failed to scan %v as carbon", value)
	}

	// ErrInvalidTimestamp invalid timestamp error.
	// 无效的时间戳错误
	ErrInvalidTimestamp = func(value string) error {
		return fmt.Errorf("invalid timestamp %v", value)
	}

	// ErrNilLocation nil location error.
	// 空指针位置错误
	ErrNilLocation = func() error {
		return fmt.Errorf("location cannot be nil")
	}

	// ErrNilLanguage nil language error.
	// 空指针语言错误
	ErrNilLanguage = func() error {
		return fmt.Errorf("language cannot be nil")
	}

	// ErrEmptyLocale empty locale error.
	// 空的语言环境错误
	ErrEmptyLocale = func() error {
		return fmt.Errorf("locale cannot be empty")
	}

	// ErrNotExistLocale not exist locale error.
	// 不存在的语言环境错误
	ErrNotExistLocale = func(locale string) error {
		return fmt.Errorf("locale %q doesn't exist", locale)
	}

	// ErrEmptyResources empty resources error.
	// 空的资源错误
	ErrEmptyResources = func() error {
		return fmt.Errorf("resources cannot be empty")
	}

	// ErrInvalidResourcesError invalid resources error.
	// 无效的资源错误
	ErrInvalidResourcesError = func() error {
		return fmt.Errorf("invalid resources")
	}

	// ErrEmptyTimezone empty timezone error.
	// 空的时区错误
	ErrEmptyTimezone = func() error {
		return fmt.Errorf("timezone cannot be empty")
	}

	// ErrInvalidTimezone invalid timezone error.
	// 无效的时区错误
	ErrInvalidTimezone = func(timezone string) error {
		return fmt.Errorf("invalid timezone %q, please see the file %q for all valid timezones", timezone, "$GOROOT/lib/time/zoneinfo.zip")
	}

	// ErrEmptyDuration empty duration error.
	// 空的时长错误
	ErrEmptyDuration = func() error {
		return fmt.Errorf("duration cannot be empty")
	}

	// ErrInvalidDuration invalid duration error.
	// 无效的时长错误
	ErrInvalidDuration = func(duration string) error {
		return fmt.Errorf("invalid duration %q", duration)
	}

	// ErrEmptyLayout empty layout error.
	// 空的布局模板错误
	ErrEmptyLayout = func() error {
		return fmt.Errorf("layout cannot be empty")
	}

	// ErrMismatchedLayout mismatched layout error.
	// 不匹配的布局模板错误
	ErrMismatchedLayout = func(value, layout string) error {
		return fmt.Errorf("value %q and layout %q are mismatched", value, layout)
	}

	// ErrEmptyFormat empty format error.
	// 空的格式模板错误
	ErrEmptyFormat = func() error {
		return fmt.Errorf("format cannot be empty")
	}

	// ErrMismatchedFormat mismatched format error.
	// 不匹配的格式模板错误
	ErrMismatchedFormat = func(value, format string) error {
		return fmt.Errorf("value %q and format %q are mismatched", value, format)
	}
)

Functions

func CleanTestNow added in v2.6.0

func CleanTestNow()

CleanTestNow clears the test Carbon instance for now. 清除当前测试时间

Example
carbon.SetTestNow(carbon.Parse("2020-08-05"))

fmt.Println(carbon.IsTestNow())

carbon.CleanTestNow()

fmt.Println(carbon.IsTestNow())
Output:

true
false

func IsTestNow added in v2.6.0

func IsTestNow() bool

IsTestNow reports whether is testing time. 是否是测试时间

func ResetDefault added in v2.6.1

func ResetDefault()

ResetDefault resets default. 重置全局默认值

func SetDefault

func SetDefault(d Default)

SetDefault sets default. 设置全局默认值

Example
defer carbon.ResetDefault()

carbon.SetDefault(carbon.Default{
	Layout:       carbon.DateTimeLayout,
	Timezone:     carbon.PRC,
	Locale:       "zh-CN",
	WeekStartsAt: carbon.Monday,
	WeekendDays: []carbon.Weekday{
		carbon.Saturday, carbon.Sunday,
	},
})

fmt.Println("default layout:", carbon.DefaultLayout)
fmt.Println("default timezone:", carbon.DefaultTimezone)
fmt.Println("default week starts at:", carbon.DefaultWeekStartsAt)
fmt.Println("default weekend days:", carbon.DefaultWeekendDays)
fmt.Println("default locale:", carbon.DefaultLocale)
Output:

default layout: 2006-01-02 15:04:05
default timezone: PRC
default week starts at: Monday
default weekend days: [Saturday Sunday]
default locale: zh-CN

func SetTestNow added in v2.6.0

func SetTestNow(carbon *Carbon)

SetTestNow sets a test Carbon instance for now, remember to clear after use. 设置当前测试时间,使用完别忘清除

Example
defer carbon.CleanTestNow()

now := carbon.Parse("2020-08-05")
carbon.SetTestNow(now)

fmt.Println(carbon.Now().ToDateString())
fmt.Println(carbon.Yesterday().ToDateString())
fmt.Println(carbon.Tomorrow().ToDateString())
fmt.Println(carbon.Now().DiffForHumans())
fmt.Println(carbon.Yesterday().DiffForHumans())
fmt.Println(carbon.Tomorrow().DiffForHumans())
fmt.Println(carbon.Parse("2020-10-05").DiffForHumans())
fmt.Println(now.DiffForHumans(carbon.Parse("2020-10-05")))
Output:

2020-08-05
2020-08-04
2020-08-06
just now
1 day ago
1 day from now
2 months from now
2 months before

Types

type Carbon

type Carbon struct {
	Error error
	// contains filtered or unexported fields
}

Carbon defines a Carbon struct. 定义 Carbon 结构体

func CreateFromDate

func CreateFromDate(year, month, day int, timezone ...string) *Carbon

CreateFromDate creates a Carbon instance from a given date. 从给定的年、月、日创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDate(2020, 8, 5).ToString())
fmt.Println(carbon.CreateFromDate(2020, 8, 5, carbon.PRC).ToString())
Output:

2020-08-05 00:00:00 +0000 UTC
2020-08-05 00:00:00 +0800 CST

func CreateFromDateMicro

func CreateFromDateMicro(year, month, day, microsecond int, timezone ...string) *Carbon

CreateFromDateMicro creates a Carbon instance from a given date and microsecond. 从给定的年、月、日、微秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateMicro(2020, 8, 5, 999999).ToString())
fmt.Println(carbon.CreateFromDateMicro(2020, 8, 5, 999999, carbon.PRC).ToString())
Output:

2020-08-05 00:00:00.999999 +0000 UTC
2020-08-05 00:00:00.999999 +0800 CST

func CreateFromDateMilli

func CreateFromDateMilli(year, month, day, millisecond int, timezone ...string) *Carbon

CreateFromDateMilli creates a Carbon instance from a given date and millisecond. 从给定的年、月、日、毫秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateMilli(2020, 8, 5, 999).ToString())
fmt.Println(carbon.CreateFromDateMilli(2020, 8, 5, 999, carbon.PRC).ToString())
Output:

2020-08-05 00:00:00.999 +0000 UTC
2020-08-05 00:00:00.999 +0800 CST

func CreateFromDateNano

func CreateFromDateNano(year, month, day, nanosecond int, timezone ...string) *Carbon

CreateFromDateNano creates a Carbon instance from a given date and nanosecond. 从给定的年、月、日、纳秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateNano(2020, 8, 5, 999999999).ToString())
fmt.Println(carbon.CreateFromDateNano(2020, 8, 5, 999999999, carbon.PRC).ToString())
Output:

2020-08-05 00:00:00.999999999 +0000 UTC
2020-08-05 00:00:00.999999999 +0800 CST

func CreateFromDateTime

func CreateFromDateTime(year, month, day, hour, minute, second int, timezone ...string) *Carbon

CreateFromDateTime creates a Carbon instance from a given date and time. 从给定的年、月、日、时、分、秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateTime(2020, 8, 5, 13, 14, 15).ToString())
fmt.Println(carbon.CreateFromDateTime(2020, 8, 5, 13, 14, 15, carbon.PRC).ToString())
Output:

2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0800 CST

func CreateFromDateTimeMicro

func CreateFromDateTimeMicro(year, month, day, hour, minute, second, microsecond int, timezone ...string) *Carbon

CreateFromDateTimeMicro creates a Carbon instance from a given date, time and microsecond. 从给定的年、月、日、时、分、秒、微秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999).ToString())
fmt.Println(carbon.CreateFromDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999, carbon.PRC).ToString())
Output:

2020-08-05 13:14:15.999999 +0000 UTC
2020-08-05 13:14:15.999999 +0800 CST

func CreateFromDateTimeMilli

func CreateFromDateTimeMilli(year, month, day, hour, minute, second, millisecond int, timezone ...string) *Carbon

CreateFromDateTimeMilli creates a Carbon instance from a given date, time and millisecond. 从给定的年、月、日、时、分、秒、毫秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateTimeMilli(2020, 8, 5, 13, 14, 15, 999).ToString())
fmt.Println(carbon.CreateFromDateTimeMilli(2020, 8, 5, 13, 14, 15, 999, carbon.PRC).ToString())
Output:

2020-08-05 13:14:15.999 +0000 UTC
2020-08-05 13:14:15.999 +0800 CST

func CreateFromDateTimeNano

func CreateFromDateTimeNano(year, month, day, hour, minute, second, nanosecond int, timezone ...string) *Carbon

CreateFromDateTimeNano creates a Carbon instance from a given date, time and nanosecond. 从给定的年、月、日、时、分、秒、纳秒创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999).ToString())
fmt.Println(carbon.CreateFromDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999, carbon.PRC).ToString())
Output:

2020-08-05 13:14:15.999999999 +0000 UTC
2020-08-05 13:14:15.999999999 +0800 CST

func CreateFromJulian

func CreateFromJulian(f float64) *Carbon

CreateFromJulian creates a Carbon instance from Julian Day or Modified Julian Day. 从 儒略日/简化儒略日 创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromJulian(2.460333051563e+06).ToString())
fmt.Println(carbon.CreateFromJulian(60332.551563).ToString())
Output:

2024-01-23 13:14:15 +0000 UTC
2024-01-23 13:14:15 +0000 UTC

func CreateFromLunar

func CreateFromLunar(year, month, day int, isLeapMonth bool) *Carbon

CreateFromLunar creates a Carbon instance from Lunar date. 从 农历日期 创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromLunar(2023, 2, 11, false).ToString(carbon.PRC))
fmt.Println(carbon.CreateFromLunar(2023, 2, 11, true).ToString(carbon.PRC))
Output:

2023-03-02 00:00:00 +0800 CST
2023-04-01 00:00:00 +0800 CST

func CreateFromPersian

func CreateFromPersian(year, month, day int) *Carbon

CreateFromPersian creates a Carbon instance from Persian date. 从 波斯日期 创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromPersian(1178, 10, 11).ToDateString())
fmt.Println(carbon.CreateFromPersian(1402, 10, 11).ToDateString())
fmt.Println(carbon.CreateFromPersian(1403, 5, 15).ToDateString())
Output:

1800-01-01
2024-01-01
2024-08-05

func CreateFromStdTime

func CreateFromStdTime(time StdTime, timezone ...string) *Carbon

CreateFromStdTime creates a Carbon instance from standard time.Time. 从标准的 time.Time 创建 Carbon 实例

Example
t1, _ := time.Parse(carbon.DateTimeLayout, "2020-08-05 13:14:15")
fmt.Println(carbon.CreateFromStdTime(t1).ToString())

loc, _ := time.LoadLocation(carbon.PRC)
t2, _ := time.ParseInLocation(carbon.DateTimeLayout, "2020-08-05 13:14:15", loc)
fmt.Println(carbon.CreateFromStdTime(t2).ToString())
Output:

2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0800 CST

func CreateFromTime

func CreateFromTime(hour, minute, second int, timezone ...string) *Carbon

CreateFromTime creates a Carbon instance from a given time(year, month and day are taken from the current time). 从给定的时、分、秒创建 Carbon 实例(年、月、日取自当前时间)

Example
fmt.Println(carbon.CreateFromTime(13, 14, 15).ToTimeString())
fmt.Println(carbon.CreateFromTime(13, 14, 15, carbon.PRC).ToTimeString())
Output:

13:14:15
13:14:15

func CreateFromTimeMicro

func CreateFromTimeMicro(hour, minute, second, microsecond int, timezone ...string) *Carbon

CreateFromTimeMicro creates a Carbon instance from a given time and microsecond(year, month and day are taken from the current time). 从给定的时、分、秒、微秒创建 Carbon 实例(年、月、日取自当前时间)

Example
fmt.Println(carbon.CreateFromTimeMicro(13, 14, 15, 999999).ToTimeMicroString())
fmt.Println(carbon.CreateFromTimeMicro(13, 14, 15, 999999, carbon.PRC).ToTimeMicroString())
Output:

13:14:15.999999
13:14:15.999999

func CreateFromTimeMilli

func CreateFromTimeMilli(hour, minute, second, millisecond int, timezone ...string) *Carbon

CreateFromTimeMilli creates a Carbon instance from a given time and millisecond(year, month and day are taken from the current time). 从给定的时、分、秒、毫秒创建 Carbon 实例(年、月、日取自当前时间)

Example
fmt.Println(carbon.CreateFromTimeMilli(13, 14, 15, 999).ToTimeMilliString())
fmt.Println(carbon.CreateFromTimeMilli(13, 14, 15, 999, carbon.PRC).ToTimeMilliString())
Output:

13:14:15.999
13:14:15.999

func CreateFromTimeNano

func CreateFromTimeNano(hour, minute, second, nanosecond int, timezone ...string) *Carbon

CreateFromTimeNano creates a Carbon instance from a given time and nanosecond(year, month and day are taken from the current time). 从给定的时、分、秒、纳秒创建 Carbon 实例(年、月、日取自当前时间)

Example
fmt.Println(carbon.CreateFromTimeNano(13, 14, 15, 999999999).ToTimeNanoString())
fmt.Println(carbon.CreateFromTimeNano(13, 14, 15, 999999999, carbon.PRC).ToTimeNanoString())
Output:

13:14:15.999999999
13:14:15.999999999

func CreateFromTimestamp

func CreateFromTimestamp(timestamp int64, timezone ...string) *Carbon

CreateFromTimestamp creates a Carbon instance from a given timestamp with second precision. 从给定的秒精度时间戳创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromTimestamp(-1).ToString())
fmt.Println(carbon.CreateFromTimestamp(0).ToString())
fmt.Println(carbon.CreateFromTimestamp(1, carbon.PRC).ToString())
fmt.Println(carbon.CreateFromTimestamp(1649735755, carbon.PRC).ToString())
Output:

1969-12-31 23:59:59 +0000 UTC
1970-01-01 00:00:00 +0000 UTC
1970-01-01 08:00:01 +0800 CST
2022-04-12 11:55:55 +0800 CST

func CreateFromTimestampMicro

func CreateFromTimestampMicro(timestampMicro int64, timezone ...string) *Carbon

CreateFromTimestampMicro creates a Carbon instance from a given timestamp with microsecond precision. 从给定的微秒精度时间戳创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromTimestampMicro(-1).ToString())
fmt.Println(carbon.CreateFromTimestampMicro(0).ToString())
fmt.Println(carbon.CreateFromTimestampMicro(1, carbon.PRC).ToString())
fmt.Println(carbon.CreateFromTimestampMicro(1649735755981566, carbon.PRC).ToString())
Output:

1969-12-31 23:59:59.999999 +0000 UTC
1970-01-01 00:00:00 +0000 UTC
1970-01-01 08:00:00.000001 +0800 CST
2022-04-12 11:55:55.981566 +0800 CST

func CreateFromTimestampMilli

func CreateFromTimestampMilli(timestampMilli int64, timezone ...string) *Carbon

CreateFromTimestampMilli creates a Carbon instance from a given timestamp with millisecond precision. 从给定的毫秒精度时间戳创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromTimestampMilli(-1).ToString())
fmt.Println(carbon.CreateFromTimestampMilli(0).ToString())
fmt.Println(carbon.CreateFromTimestampMilli(1, carbon.PRC).ToString())
fmt.Println(carbon.CreateFromTimestampMilli(1649735755981, carbon.PRC).ToString())
Output:

1969-12-31 23:59:59.999 +0000 UTC
1970-01-01 00:00:00 +0000 UTC
1970-01-01 08:00:00.001 +0800 CST
2022-04-12 11:55:55.981 +0800 CST

func CreateFromTimestampNano

func CreateFromTimestampNano(timestampNano int64, timezone ...string) *Carbon

CreateFromTimestampNano creates a Carbon instance from a given timestamp with nanosecond precision. 从给定的纳秒精度时间戳创建 Carbon 实例

Example
fmt.Println(carbon.CreateFromTimestampNano(-1).ToString())
fmt.Println(carbon.CreateFromTimestampNano(0).ToString())
fmt.Println(carbon.CreateFromTimestampNano(1, carbon.PRC).ToString())
fmt.Println(carbon.CreateFromTimestampNano(1649735755981566888, carbon.PRC).ToString())
Output:

1969-12-31 23:59:59.999999999 +0000 UTC
1970-01-01 00:00:00 +0000 UTC
1970-01-01 08:00:00.000000001 +0800 CST
2022-04-12 11:55:55.981566888 +0800 CST

func Max

func Max(c1 *Carbon, c2 ...*Carbon) (c *Carbon)

Max returns the maximum Carbon instance from the given Carbon instance. 返回最大的 Carbon 实例

Example
fmt.Println(carbon.Max(carbon.Parse("2020-08-06"), carbon.Parse("2021-08-05")).ToString())
Output:

2021-08-05 00:00:00 +0000 UTC

func MaxValue added in v2.5.1

func MaxValue() *Carbon

MaxValue returns a Carbon instance for the greatest supported date. 返回 Carbon 的最大值

Example
fmt.Println(carbon.MaxValue().ToString())
Output:

9999-12-31 23:59:59.999999999 +0000 UTC

func Min

func Min(c1 *Carbon, c2 ...*Carbon) (c *Carbon)

Min returns the minimum Carbon instance from the given Carbon instance. 返回最小的 Carbon 实例

Example
fmt.Println(carbon.Min(carbon.Parse("2020-08-06"), carbon.Parse("2021-08-05")).ToString())
Output:

2020-08-06 00:00:00 +0000 UTC

func MinValue added in v2.5.1

func MinValue() *Carbon

MinValue returns a Carbon instance for the lowest supported date. 返回 Carbon 的最小值

Example
fmt.Println(carbon.MinValue().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC

func NewCarbon

func NewCarbon(time ...StdTime) *Carbon

NewCarbon returns a new Carbon instance. 返回 Carbon 实例

Example
loc, _ := time.LoadLocation(carbon.PRC)

t1, _ := time.Parse(carbon.DateTimeLayout, "2020-08-05 13:14:15")
t2, _ := time.ParseInLocation(carbon.DateTimeLayout, "2020-08-05 13:14:15", loc)

fmt.Println("go zero time:", time.Time{}.String())
fmt.Println("go zero time with timezone:", time.Time{}.In(loc).String())
fmt.Println("go valid time:", t1.String())
fmt.Println("go valid time with timezone:", t2.In(loc).String())

fmt.Println("carbon zero time:", carbon.NewCarbon().ToString())
fmt.Println("carbon zero time with timezone:", carbon.NewCarbon().SetLocation(loc).ToString())
fmt.Println("carbon valid time:", carbon.NewCarbon(t1).ToString())
fmt.Println("carbon valid time with timezone:", carbon.NewCarbon(t2).SetLocation(loc).ToString())
Output:

go zero time: 0001-01-01 00:00:00 +0000 UTC
go zero time with timezone: 0001-01-01 08:05:43 +0805 LMT
go valid time: 2020-08-05 13:14:15 +0000 UTC
go valid time with timezone: 2020-08-05 13:14:15 +0800 CST
carbon zero time: 0001-01-01 00:00:00 +0000 UTC
carbon zero time with timezone: 0001-01-01 08:05:43 +0805 LMT
carbon valid time: 2020-08-05 13:14:15 +0000 UTC
carbon valid time with timezone: 2020-08-05 13:14:15 +0800 CST

func Now

func Now(timezone ...string) *Carbon

Now returns a Carbon instance for now. 当前

Example
defer carbon.CleanTestNow()

carbon.SetTestNow(carbon.Parse("2020-08-05"))

fmt.Println(carbon.Now(carbon.UTC).ToString())
Output:

2020-08-05 00:00:00 +0000 UTC

func Parse

func Parse(value string, timezone ...string) *Carbon

Parse parses a standard time string as a Carbon instance. 将标准格式时间字符串解析成 Carbon 实例

Example
fmt.Println(carbon.Parse("2020-8-5").ToString())
fmt.Println(carbon.Parse("2020-8-05").ToString())
fmt.Println(carbon.Parse("2020-08-05").ToString())

fmt.Println(carbon.Parse("2020-8-5 1:2:3").ToString())
fmt.Println(carbon.Parse("2020-08-05 1:2:03").ToString())
fmt.Println(carbon.Parse("2020-08-05 1:02:03").ToString())
fmt.Println(carbon.Parse("2020-08-05 01:02:03").ToString())

fmt.Println(carbon.Parse("2023-01-08T09:02:48").ToString())
fmt.Println(carbon.Parse("2023-1-8T09:02:48").ToString())
fmt.Println(carbon.Parse("2023-01-08T9:2:48").ToString())
fmt.Println(carbon.Parse("2023-01-8T9:2:48").ToString())

fmt.Println(carbon.Parse("0000-01-01 00:00:00").ToString())
fmt.Println(carbon.Parse("0001-01-01 00:00:00").ToString())
Output:

2020-08-05 00:00:00 +0000 UTC
2020-08-05 00:00:00 +0000 UTC
2020-08-05 00:00:00 +0000 UTC
2020-08-05 01:02:03 +0000 UTC
2020-08-05 01:02:03 +0000 UTC
2020-08-05 01:02:03 +0000 UTC
2020-08-05 01:02:03 +0000 UTC
2023-01-08 09:02:48 +0000 UTC
2023-01-08 09:02:48 +0000 UTC
2023-01-08 09:02:48 +0000 UTC
2023-01-08 09:02:48 +0000 UTC
0000-01-01 00:00:00 +0000 UTC
0001-01-01 00:00:00 +0000 UTC

func ParseByFormat

func ParseByFormat(value, format string, timezone ...string) *Carbon

ParseByFormat parses a time string as a Carbon instance by a confirmed format. 通过一个确认的 格式模板 将时间字符串解析成 Carbon 实例

Example
fmt.Println(carbon.ParseByFormat("2020-08-05", carbon.DateFormat).ToString())
fmt.Println(carbon.ParseByFormat("2020-08-05 13:14:15", carbon.DateTimeFormat, carbon.PRC).ToString())
fmt.Println(carbon.ParseByFormat("2020|08|05 13:14:15", "Y|m|d H:i:s").ToString())

fmt.Println(carbon.ParseByFormat("It is 2020-08-05 13:14:15", "\\I\\t \\i\\s Y-m-d H:i:s").ToString())
fmt.Println(carbon.ParseByFormat("今天是 2020年08月05日13时14分15秒", "今天是 Y年m月d日H时i分s秒").ToString())

fmt.Println(carbon.ParseByFormat("1699677240", carbon.TimestampFormat).ToString())
fmt.Println(carbon.ParseByFormat("1699677240666", carbon.TimestampMilliFormat).ToString())
fmt.Println(carbon.ParseByFormat("1699677240666666", carbon.TimestampMicroFormat).ToString())
fmt.Println(carbon.ParseByFormat("1699677240666666666", carbon.TimestampNanoFormat).ToString())
Output:

2020-08-05 00:00:00 +0000 UTC
2020-08-05 13:14:15 +0800 CST
2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0000 UTC
2023-11-11 04:34:00 +0000 UTC
2023-11-11 04:34:00.666 +0000 UTC
2023-11-11 04:34:00.666666 +0000 UTC
2023-11-11 04:34:00.666666666 +0000 UTC

func ParseByLayout

func ParseByLayout(value, layout string, timezone ...string) *Carbon

ParseByLayout parses a time string as a Carbon instance by a confirmed layout 通过一个确认的 布局模板 将时间字符串解析成 Carbon 实例

Example
fmt.Println(carbon.ParseByLayout("2020-08-05", carbon.DateLayout).ToString())
fmt.Println(carbon.ParseByLayout("2020-08-05 13:14:15", carbon.DateTimeLayout, carbon.PRC).ToString())
fmt.Println(carbon.ParseByLayout("2020|08|05 13:14:15", "2006|01|02 15:04:05").ToString())

fmt.Println(carbon.ParseByLayout("It is 2020-08-05 13:14:15", "It is 2006-01-02 15:04:05").ToString())
fmt.Println(carbon.ParseByLayout("今天是 2020年08月05日13时14分15秒", "今天是 2006年01月02日15时04分05秒").ToString())

fmt.Println(carbon.ParseByLayout("1699677240", carbon.TimestampLayout).ToString())
fmt.Println(carbon.ParseByLayout("1699677240666", carbon.TimestampMilliLayout).ToString())
fmt.Println(carbon.ParseByLayout("1699677240666666", carbon.TimestampMicroLayout).ToString())
fmt.Println(carbon.ParseByLayout("1699677240666666666", carbon.TimestampNanoLayout).ToString())
Output:

2020-08-05 00:00:00 +0000 UTC
2020-08-05 13:14:15 +0800 CST
2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0000 UTC
2023-11-11 04:34:00 +0000 UTC
2023-11-11 04:34:00.666 +0000 UTC
2023-11-11 04:34:00.666666 +0000 UTC
2023-11-11 04:34:00.666666666 +0000 UTC

func ParseWithFormats added in v2.6.1

func ParseWithFormats(value string, formats []string, timezone ...string) *Carbon

ParseWithFormats parses a time string as a Carbon instance with multiple fuzzy formats. 通过多个模糊的 格式模板 将时间字符串解析成 Carbon 实例

Example
c := carbon.ParseWithFormats("2020|08|05 13|14|15", []string{"Y|m|d H|i|s", "y|m|d h|i|s"})
fmt.Println(c.ToString())
fmt.Println(c.CurrentLayout())
Output:

2020-08-05 13:14:15 +0000 UTC
2006|01|02 15|04|05

func ParseWithLayouts added in v2.6.1

func ParseWithLayouts(value string, layouts []string, timezone ...string) *Carbon

ParseWithLayouts parses a time string as a Carbon instance with multiple fuzzy layouts. 通过多个模糊的 布局模板 将时间字符串解析成 Carbon 实例

Example
c := carbon.ParseWithLayouts("2020|08|05 13|14|15", []string{"2006|01|02 15|04|05", "2006|1|2 3|4|5"})
fmt.Println(c.ToString())
fmt.Println(c.CurrentLayout())
Output:

2020-08-05 13:14:15 +0000 UTC
2006|01|02 15|04|05

func SetFormat added in v2.6.0

func SetFormat(format string) *Carbon

SetFormat sets globally default format. 设置全局默认格式模板

Example
defer carbon.SetFormat(carbon.DateTimeFormat)

fmt.Println("current layout:", carbon.SetFormat(carbon.DateTimeFormat).CurrentLayout())
fmt.Println("current layout:", carbon.SetFormat(carbon.TimeFormat).CurrentLayout())
Output:

current layout: 2006-01-02 15:04:05
current layout: 15:04:05

func SetLayout added in v2.6.0

func SetLayout(layout string) *Carbon

SetLayout sets globally default layout. 设置全局默认布局模板

Example
defer carbon.SetLayout(carbon.DateTimeLayout)

fmt.Println("current layout:", carbon.SetLayout(carbon.DateTimeLayout).CurrentLayout())
fmt.Println("current layout:", carbon.SetLayout(carbon.TimeLayout).CurrentLayout())
Output:

current layout: 2006-01-02 15:04:05
current layout: 15:04:05

func SetLocale

func SetLocale(locale string) *Carbon

SetLocale sets globally default locale. 设置全局默认语言区域

Example
defer carbon.SetLocale("en")

carbon.SetLocale("zh-CN")

c := carbon.Parse("2020-08-05")

fmt.Println(c.Constellation())
fmt.Println(c.Season())
fmt.Println(c.ToMonthString())
fmt.Println(c.ToShortMonthString())
fmt.Println(c.ToWeekString())
fmt.Println(c.ToShortWeekString())
Output:

狮子座
夏季
八月
8月
星期三
周三

func SetLocation

func SetLocation(loc *Location) *Carbon

SetLocation sets globally default location. 设置全局默认位置

Example
defer carbon.SetLocation(time.UTC)

utcTZ, _ := time.LoadLocation(carbon.UTC)
fmt.Println("UTC zone location:", carbon.SetLocation(utcTZ).Timezone())
fmt.Println("UTC zone name:", carbon.SetLocation(utcTZ).ZoneName())
fmt.Println("UTC zone offset:", carbon.SetLocation(utcTZ).ZoneOffset())

prcTZ, _ := time.LoadLocation(carbon.PRC)
fmt.Println("PRC zone location:", carbon.SetLocation(prcTZ).Timezone())
fmt.Println("PRC zone name:", carbon.SetLocation(prcTZ).ZoneName())
fmt.Println("PRC zone offset:", carbon.SetLocation(prcTZ).ZoneOffset())

japanTZ, _ := time.LoadLocation(carbon.Japan)
fmt.Println("Japan zone location:", carbon.SetLocation(japanTZ).Timezone())
fmt.Println("Japan zone name:", carbon.SetLocation(japanTZ).ZoneName())
fmt.Println("Japan zone offset:", carbon.SetLocation(japanTZ).ZoneOffset())
Output:

UTC zone location: UTC
UTC zone name: UTC
UTC zone offset: 0
PRC zone location: PRC
PRC zone name: LMT
PRC zone offset: 29143
Japan zone location: Japan
Japan zone name: LMT
Japan zone offset: 33539

func SetTimezone

func SetTimezone(name string) *Carbon

SetTimezone sets globally default timezone. 设置全局默认时区

Example
defer carbon.SetTimezone(carbon.UTC)

fmt.Println("UTC zone location:", carbon.SetTimezone(carbon.UTC).Timezone())
fmt.Println("UTC zone name:", carbon.SetTimezone(carbon.UTC).ZoneName())
fmt.Println("UTC zone offset:", carbon.SetTimezone(carbon.UTC).ZoneOffset())

fmt.Println("PRC zone location:", carbon.SetTimezone(carbon.PRC).Timezone())
fmt.Println("PRC zone name:", carbon.SetTimezone(carbon.PRC).ZoneName())
fmt.Println("PRC zone offset:", carbon.SetTimezone(carbon.PRC).ZoneOffset())

fmt.Println("Japan zone location:", carbon.SetTimezone(carbon.Japan).Timezone())
fmt.Println("Japan zone name:", carbon.SetTimezone(carbon.Japan).ZoneName())
fmt.Println("Japan zone offset:", carbon.SetTimezone(carbon.Japan).ZoneOffset())
Output:

UTC zone location: UTC
UTC zone name: UTC
UTC zone offset: 0
PRC zone location: PRC
PRC zone name: LMT
PRC zone offset: 29143
Japan zone location: Japan
Japan zone name: LMT
Japan zone offset: 33539

func SetWeekStartsAt

func SetWeekStartsAt(weekday Weekday) *Carbon

SetWeekStartsAt sets globally default start day of the week. 设置全局默认周起始日期

Example
defer carbon.SetWeekStartsAt(carbon.Monday)

fmt.Println(carbon.SetWeekStartsAt(carbon.Sunday).WeekStartsAt())
fmt.Println(carbon.SetWeekStartsAt(carbon.Monday).WeekStartsAt())
Output:

Sunday
Monday

func SetWeekendDays added in v2.6.3

func SetWeekendDays(weekDays []Weekday) *Carbon

SetWeekendDays sets globally default weekend days of the week. 设置全局默认一周周末日期

Example
defer carbon.SetWeekendDays([]carbon.Weekday{
	carbon.Saturday, carbon.Sunday,
})

carbon.SetWeekendDays([]carbon.Weekday{
	carbon.Saturday,
})
fmt.Println(carbon.Parse("2025-04-12").IsWeekend())
fmt.Println(carbon.Parse("2025-04-13").IsWeekend())

carbon.SetWeekendDays([]carbon.Weekday{
	carbon.Sunday,
})
fmt.Println(carbon.Parse("2025-04-12").IsWeekend())
fmt.Println(carbon.Parse("2025-04-13").IsWeekend())
Output:

true
false
false
true

func Tomorrow

func Tomorrow(timezone ...string) *Carbon

Tomorrow returns a Carbon instance for tomorrow. 明天

Example
defer carbon.CleanTestNow()

carbon.SetTestNow(carbon.Parse("2020-08-05"))

fmt.Println(carbon.Tomorrow(carbon.UTC).ToString())
Output:

2020-08-06 00:00:00 +0000 UTC

func Yesterday

func Yesterday(timezone ...string) *Carbon

Yesterday returns a Carbon instance for yesterday. 昨天

Example
defer carbon.CleanTestNow()

carbon.SetTestNow(carbon.Parse("2020-08-05"))

fmt.Println(carbon.Yesterday(carbon.UTC).ToString())
Output:

2020-08-04 00:00:00 +0000 UTC

func (*Carbon) AddCenturies

func (c *Carbon) AddCenturies(centuries int) *Carbon

AddCenturies adds some centuries. N 个世纪后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturies(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturies(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturies(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2120-01-01 13:14:15 +0000 UTC
2220-01-01 13:14:15 +0000 UTC

func (*Carbon) AddCenturiesNoOverflow

func (c *Carbon) AddCenturiesNoOverflow(centuries int) *Carbon

AddCenturiesNoOverflow adds some centuries without overflowing month. N 个世纪后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturiesNoOverflow(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturiesNoOverflow(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturiesNoOverflow(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2120-01-01 13:14:15 +0000 UTC
2220-01-01 13:14:15 +0000 UTC

func (*Carbon) AddCentury

func (c *Carbon) AddCentury() *Carbon

AddCentury adds one century. 1 个世纪后

Example
defer carbon.CleanTestNow()

fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCentury().ToString())
Output:

2120-01-01 13:14:15 +0000 UTC

func (*Carbon) AddCenturyNoOverflow

func (c *Carbon) AddCenturyNoOverflow() *Carbon

AddCenturyNoOverflow adds one century without overflowing month. 1 个世纪后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddCenturyNoOverflow().ToString())
Output:

2120-01-01 13:14:15 +0000 UTC

func (*Carbon) AddDay

func (c *Carbon) AddDay() *Carbon

AddDay adds one day. 1 天后

Example
fmt.Println(carbon.Parse("2020-01-01").AddDay().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddDay().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddDay().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").AddDay().ToDateString())
Output:

2020-01-02
2020-02-29
2020-03-01
2020-12-01

func (*Carbon) AddDays

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

AddDays adds some days. N 天后

Example
fmt.Println(carbon.Parse("2020-01-01").AddDays(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddDays(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddDays(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddDays(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").AddDays(2).ToDateString())
Output:

2020-01-01
2020-01-02
2020-01-03
2020-03-03
2020-09-02

func (*Carbon) AddDecade

func (c *Carbon) AddDecade() *Carbon

AddDecade adds one decade. 1 个年代后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecade().ToString())
Output:

2030-01-01 13:14:15 +0000 UTC

func (*Carbon) AddDecadeNoOverflow

func (c *Carbon) AddDecadeNoOverflow() *Carbon

AddDecadeNoOverflow adds one decade without overflowing month. 1 个年代后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecadeNoOverflow().ToString())
Output:

2030-01-01 13:14:15 +0000 UTC

func (*Carbon) AddDecades

func (c *Carbon) AddDecades(decades int) *Carbon

AddDecades adds some decades. N 个年代后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecades(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecades(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecades(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2030-01-01 13:14:15 +0000 UTC
2040-01-01 13:14:15 +0000 UTC

func (*Carbon) AddDecadesNoOverflow

func (c *Carbon) AddDecadesNoOverflow(decades int) *Carbon

AddDecadesNoOverflow adds some decades without overflowing month. N 个年代后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecadesNoOverflow(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecadesNoOverflow(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDecadesNoOverflow(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2030-01-01 13:14:15 +0000 UTC
2040-01-01 13:14:15 +0000 UTC

func (*Carbon) AddDuration

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

AddDuration adds duration. 按照时长增加时间,支持整数/浮点数和符号ns(纳秒)、us(微妙)、ms(毫秒)、s(秒)、m(分钟)、h(小时)的组合

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDuration("10h").ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDuration("10.5h").ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDuration("10m").ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddDuration("10.5m").ToString())
Output:

2020-01-01 23:14:15 +0000 UTC
2020-01-01 23:44:15 +0000 UTC
2020-01-01 13:24:15 +0000 UTC
2020-01-01 13:24:45 +0000 UTC

func (*Carbon) AddHour

func (c *Carbon) AddHour() *Carbon

AddHour adds one hour. 1 小时后

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").AddHour().ToString())
Output:

2020-08-05 14:14:15 +0000 UTC

func (*Carbon) AddHours

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

AddHours adds some hours. N 小时后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddHours(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddHours(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddHours(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 14:14:15 +0000 UTC
2020-01-01 15:14:15 +0000 UTC

func (*Carbon) AddMicrosecond

func (c *Carbon) AddMicrosecond() *Carbon

AddMicrosecond adds one microsecond. 1 微秒后

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").AddMicrosecond().ToString())
Output:

2020-08-05 13:14:15.000001 +0000 UTC

func (*Carbon) AddMicroseconds

func (c *Carbon) AddMicroseconds(microseconds int) *Carbon

AddMicroseconds adds some microseconds. N 微秒后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMicroseconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMicroseconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMicroseconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:15.000001 +0000 UTC
2020-01-01 13:14:15.000002 +0000 UTC

func (*Carbon) AddMillisecond

func (c *Carbon) AddMillisecond() *Carbon

AddMillisecond adds one millisecond. 1 毫秒后

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").AddMillisecond().ToString())
Output:

2020-08-05 13:14:15.001 +0000 UTC

func (*Carbon) AddMilliseconds

func (c *Carbon) AddMilliseconds(milliseconds int) *Carbon

AddMilliseconds adds some milliseconds. N 毫秒后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMilliseconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMilliseconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMilliseconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:15.001 +0000 UTC
2020-01-01 13:14:15.002 +0000 UTC

func (*Carbon) AddMinute

func (c *Carbon) AddMinute() *Carbon

AddMinute adds one minute. 1 分钟后

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").AddMinute().ToString())
Output:

2020-08-05 13:15:15 +0000 UTC

func (*Carbon) AddMinutes

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

AddMinutes adds some minutes. N 分钟后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMinutes(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMinutes(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddMinutes(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:15:15 +0000 UTC
2020-01-01 13:16:15 +0000 UTC

func (*Carbon) AddMonth

func (c *Carbon) AddMonth() *Carbon

AddMonth adds one month. 1 个月后

Example
fmt.Println(carbon.Parse("2020-01-01").AddMonth().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddMonth().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddMonth().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").AddMonth().ToDateString())
Output:

2020-02-01
2020-03-28
2020-03-29
2020-12-30

func (*Carbon) AddMonthNoOverflow

func (c *Carbon) AddMonthNoOverflow() *Carbon

AddMonthNoOverflow adds one month without overflowing month. 1 个月后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").AddMonthNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddMonthNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddMonthNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").AddMonthNoOverflow().ToDateString())
Output:

2020-02-01
2020-03-28
2020-03-29
2020-12-30

func (*Carbon) AddMonths

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

AddMonths adds some months. N 个月后

Example
fmt.Println(carbon.Parse("2020-01-01").AddMonths(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddMonths(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddMonths(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddMonths(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").AddMonths(2).ToDateString())
Output:

2020-01-01
2020-02-01
2020-03-01
2020-05-29
2020-10-31

func (*Carbon) AddMonthsNoOverflow

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

AddMonthsNoOverflow adds some months without overflowing month. N 个月后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").AddMonthsNoOverflow(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddMonthsNoOverflow(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddMonthsNoOverflow(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddMonthsNoOverflow(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").AddMonthsNoOverflow(2).ToDateString())
Output:

2020-01-01
2020-02-01
2020-03-01
2020-05-29
2020-10-31

func (*Carbon) AddNanosecond

func (c *Carbon) AddNanosecond() *Carbon

AddNanosecond adds one nanosecond. 1 纳秒后

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").AddNanosecond().ToString())
Output:

2020-08-05 13:14:15.000000001 +0000 UTC

func (*Carbon) AddNanoseconds

func (c *Carbon) AddNanoseconds(nanoseconds int) *Carbon

AddNanoseconds adds some nanoseconds. N 纳秒后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddNanoseconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddNanoseconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddNanoseconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:15.000000001 +0000 UTC
2020-01-01 13:14:15.000000002 +0000 UTC

func (*Carbon) AddQuarter

func (c *Carbon) AddQuarter() *Carbon

AddQuarter adds one quarter 1 个季度后

Example
fmt.Println(carbon.Parse("2020-01-01").AddQuarter().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddQuarter().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddQuarter().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").AddQuarter().ToDateString())
Output:

2020-04-01
2020-05-28
2020-05-29
2021-03-02

func (*Carbon) AddQuarterNoOverflow

func (c *Carbon) AddQuarterNoOverflow() *Carbon

AddQuarterNoOverflow adds one quarter without overflowing month. 1 个季度后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").AddQuarterNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddQuarterNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddQuarterNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").AddQuarterNoOverflow().ToDateString())
Output:

2020-04-01
2020-05-28
2020-05-29
2021-02-28

func (*Carbon) AddQuarters

func (c *Carbon) AddQuarters(quarters int) *Carbon

AddQuarters adds some quarters N 个季度后

Example
fmt.Println(carbon.Parse("2020-01-01").AddQuarters(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddQuarters(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddQuarters(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddQuarters(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").AddQuarters(2).ToDateString())
Output:

2020-01-01
2020-04-01
2020-07-01
2020-11-29
2021-03-03

func (*Carbon) AddQuartersNoOverflow

func (c *Carbon) AddQuartersNoOverflow(quarters int) *Carbon

AddQuartersNoOverflow adds quarters without overflowing month. N 个季度后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").AddQuartersNoOverflow(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddQuartersNoOverflow(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddQuartersNoOverflow(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddQuartersNoOverflow(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").AddQuartersNoOverflow(2).ToDateString())
Output:

2020-01-01
2020-04-01
2020-07-01
2020-11-29
2021-02-28

func (*Carbon) AddSecond

func (c *Carbon) AddSecond() *Carbon

AddSecond adds one second. 1 秒钟后

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").AddSecond().ToString())
Output:

2020-08-05 13:14:16 +0000 UTC

func (*Carbon) AddSeconds

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

AddSeconds adds some seconds. N 秒钟后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddSeconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddSeconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").AddSeconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:16 +0000 UTC
2020-01-01 13:14:17 +0000 UTC

func (*Carbon) AddWeek

func (c *Carbon) AddWeek() *Carbon

AddWeek adds one week. 1 周后

Example
fmt.Println(carbon.Parse("2020-01-01").AddWeek().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddWeek().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddWeek().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").AddWeek().ToDateString())
Output:

2020-01-08
2020-03-06
2020-03-07
2020-12-07

func (*Carbon) AddWeeks

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

AddWeeks adds some weeks. N 周后

Example
fmt.Println(carbon.Parse("2020-01-01").AddWeeks(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddWeeks(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddWeeks(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddWeeks(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").AddWeeks(2).ToDateString())
Output:

2020-01-01
2020-01-08
2020-01-15
2020-03-21
2020-09-14

func (*Carbon) AddYear

func (c *Carbon) AddYear() *Carbon

AddYear adds one year. 1 年后

Example
fmt.Println(carbon.Parse("2020-01-01").AddYear().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddYear().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddYear().ToDateString())
Output:

2021-01-01
2021-02-28
2021-03-01

func (*Carbon) AddYearNoOverflow

func (c *Carbon) AddYearNoOverflow() *Carbon

AddYearNoOverflow adds one year without overflowing month. 1 年后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").AddYearNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").AddYearNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddYearNoOverflow().ToDateString())
Output:

2021-01-01
2021-02-28
2021-02-28

func (*Carbon) AddYears

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

AddYears adds some years. N 年后

Example
fmt.Println(carbon.Parse("2020-01-01").AddYears(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddYears(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddYears(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddYears(3).ToDateString())
Output:

2020-01-01
2021-01-01
2022-01-01
2023-03-01

func (*Carbon) AddYearsNoOverflow

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

AddYearsNoOverflow adds some years without overflowing month. N 年后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").AddYearsNoOverflow(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddYearsNoOverflow(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").AddYearsNoOverflow(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").AddYearsNoOverflow(3).ToDateString())
Output:

2020-01-01
2021-01-01
2022-01-01
2023-02-28

func (*Carbon) Age

func (c *Carbon) Age() int

Age gets age like 18. 获取年龄

Example
fmt.Println(carbon.Now().AddYears(18).Age())
fmt.Println(carbon.Now().SubYears(18).Age())
Output:

0
18

func (*Carbon) Between

func (c *Carbon) Between(start *Carbon, end *Carbon) bool

Between reports whether between two times, excluded the start and end time. 是否在两个时间之间(不包括这两个时间)

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Between(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Between(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Between(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Between(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Between(carbon.Parse("2021-08-05 22:00:00"), carbon.Parse("2019-08-05 22:00:00")))
Output:

true
false
false
false
false

func (*Carbon) BetweenIncludedBoth

func (c *Carbon) BetweenIncludedBoth(start *Carbon, end *Carbon) bool

BetweenIncludedBoth reports whether between two times, included the start and end time. 是否在两个时间之间(包括这两个时间)

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedBoth(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedBoth(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedBoth(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedBoth(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedBoth(carbon.Parse("2022-08-05 22:00:00"), carbon.Parse("2021-08-05 22:00:00")))
Output:

true
true
true
true
false

func (*Carbon) BetweenIncludedEnd

func (c *Carbon) BetweenIncludedEnd(start *Carbon, end *Carbon) bool

BetweenIncludedEnd reports whether between two times, included the end time. 是否在两个时间之间(包括结束时间)

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedEnd(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedEnd(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedEnd(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedEnd(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedEnd(carbon.Parse("2022-08-05 22:00:00"), carbon.Parse("2021-08-05 22:00:00")))
Output:

false
true
false
true
false

func (*Carbon) BetweenIncludedStart

func (c *Carbon) BetweenIncludedStart(start *Carbon, end *Carbon) bool

BetweenIncludedStart reports whether between two times, included the start time. 是否在两个时间之间(包括开始时间)

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedStart(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedStart(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedStart(carbon.Parse("2020-08-05 22:00:00"), carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedStart(carbon.Parse("2020-08-05 21:00:00"), carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").BetweenIncludedStart(carbon.Parse("2022-08-05 22:00:00"), carbon.Parse("2021-08-05 22:00:00")))
Output:

false
true
true
false
false

func (*Carbon) Century

func (c *Carbon) Century() int

Century gets current century like 21. 获取当前世纪

Example
fmt.Println(carbon.Parse("1990-08-05").Century())
fmt.Println(carbon.Parse("2021-08-05").Century())
Output:

20
21

func (*Carbon) Closest

func (c *Carbon) Closest(c1 *Carbon, c2 *Carbon) *Carbon

Closest returns the closest Carbon instance from the given Carbon instance. 返回离给定 carbon 实例最近的 Carbon 实例

Example
fmt.Println(carbon.Parse("2020-08-05").Closest(carbon.Parse("2020-08-06"), carbon.Parse("2021-08-05")).ToString())
Output:

2020-08-06 00:00:00 +0000 UTC

func (*Carbon) Compare

func (c *Carbon) Compare(operator string, t *Carbon) bool

Compare compares by an operator. 时间比较

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Compare(">=", carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Compare("<", carbon.Parse("2020-08-05 22:00:00")))
Output:

true
false

func (*Carbon) Constellation

func (c *Carbon) Constellation() string

Constellation gets constellation name like "Aries", i18n is supported. 获取星座,支持 i18n

Example
fmt.Println(carbon.Parse("2020-01-05").Constellation())
fmt.Println(carbon.Parse("2020-02-05").Constellation())
fmt.Println(carbon.Parse("2020-03-05").Constellation())
fmt.Println(carbon.Parse("2020-04-05").Constellation())
fmt.Println(carbon.Parse("2020-05-05").Constellation())
fmt.Println(carbon.Parse("2020-06-05").Constellation())
fmt.Println(carbon.Parse("2020-07-05").Constellation())
fmt.Println(carbon.Parse("2020-08-05").Constellation())
fmt.Println(carbon.Parse("2020-09-05").Constellation())
fmt.Println(carbon.Parse("2020-10-05").Constellation())
fmt.Println(carbon.Parse("2020-11-05").Constellation())
fmt.Println(carbon.Parse("2020-12-05").Constellation())
Output:

Capricorn
Aquarius
Pisces
Aries
Taurus
Gemini
Cancer
Leo
Virgo
Libra
Scorpio
Sagittarius

func (*Carbon) Copy added in v2.6.0

func (c *Carbon) Copy() *Carbon

Copy returns a new copy of the current Carbon instance 复制 Carbon 实例

Example
oldCarbon := carbon.Parse("2020-08-05")
newCarbon := oldCarbon.Copy()

oldCarbon = oldCarbon.AddDay().SetLayout(carbon.DateTimeLayout).SetLocale("zh-CN").SetWeekStartsAt(carbon.Sunday)

fmt.Printf("old time: %s\n", oldCarbon.ToString())
fmt.Printf("new time: %s\n", newCarbon.ToString())

fmt.Printf("old layout: %s\n", oldCarbon.CurrentLayout())
fmt.Printf("new layout: %s\n", newCarbon.CurrentLayout())

fmt.Printf("old locale: %s\n", oldCarbon.Locale())
fmt.Printf("new locale: %s\n", newCarbon.Locale())

fmt.Printf("old week starts at: %s\n", oldCarbon.WeekStartsAt())
fmt.Printf("new week starts at: %s\n", newCarbon.WeekStartsAt())
Output:

old time: 2020-08-06 00:00:00 +0000 UTC
new time: 2020-08-05 00:00:00 +0000 UTC
old layout: 2006-01-02 15:04:05
new layout: 2006-01-02
old locale: zh-CN
new locale: en
old week starts at: Sunday
new week starts at: Monday

func (*Carbon) CurrentLayout added in v2.5.4

func (c *Carbon) CurrentLayout() string

CurrentLayout returns the layout used for parsing the time string. 获取当前布局模板

Example
fmt.Println(carbon.Parse("now").CurrentLayout())
fmt.Println(carbon.ParseByLayout("13:14:15", carbon.TimeLayout).CurrentLayout())
fmt.Println(carbon.ParseByLayout("2020-08-05", carbon.DateLayout).CurrentLayout())
Output:

2006-01-02 15:04:05
15:04:05
2006-01-02

func (*Carbon) Date

func (c *Carbon) Date() (year, month, day int)

Date gets current year, month, and day like 2020, 8, 5. 获取当前年、月、日

Example
year, month, day := carbon.Parse("2020-08-05 13:14:15.999999999").Date()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
Output:

2020
8
5

func (*Carbon) DateMicro

func (c *Carbon) DateMicro() (year, month, day, microsecond int)

DateMicro gets current year, month, day and microsecond like 2020, 8, 5, 999999. 获取当前年、月、日、微秒

Example
year, month, day, microsecond := carbon.Parse("2020-08-05 13:14:15.999999999").DateMicro()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(microsecond)
Output:

2020
8
5
999999

func (*Carbon) DateMilli

func (c *Carbon) DateMilli() (year, month, day, millisecond int)

DateMilli gets current year, month, day and millisecond like 2020, 8, 5, 999. 获取当前年、月、日、毫秒

Example
year, month, day, millisecond := carbon.Parse("2020-08-05 13:14:15.999999999").DateMilli()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(millisecond)
Output:

2020
8
5
999

func (*Carbon) DateNano

func (c *Carbon) DateNano() (year, month, day, nanosecond int)

DateNano gets current year, month, day and nanosecond like 2020, 8, 5, 999999999. 获取当前年、月、日、纳秒

Example
year, month, day, nanosecond := carbon.Parse("2020-08-05 13:14:15.999999999").DateNano()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(nanosecond)
Output:

2020
8
5
999999999

func (*Carbon) DateTime

func (c *Carbon) DateTime() (year, month, day, hour, minute, second int)

DateTime gets current year, month, day, hour, minute, and second like 2020, 8, 5, 13, 14, 15. 获取当前年、月、日、时、分、秒

Example
year, month, day, hour, minute, second := carbon.Parse("2020-08-05 13:14:15.999999999").DateTime()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
Output:

2020
8
5
13
14
15

func (*Carbon) DateTimeMicro

func (c *Carbon) DateTimeMicro() (year, month, day, hour, minute, second, microsecond int)

DateTimeMicro gets current year, month, day, hour, minute, second and microsecond like 2020, 8, 5, 13, 14, 15, 999999. 获取当前年、月、日、时、分、秒、微秒

Example
year, month, day, hour, minute, second, microsecond := carbon.Parse("2020-08-05 13:14:15.999999999").DateTimeMicro()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
fmt.Println(microsecond)
Output:

2020
8
5
13
14
15
999999

func (*Carbon) DateTimeMilli

func (c *Carbon) DateTimeMilli() (year, month, day, hour, minute, second, millisecond int)

DateTimeMilli gets current year, month, day, hour, minute, second and millisecond like 2020, 8, 5, 13, 14, 15, 999. 获取当前年、月、日、时、分、秒、毫秒

Example
year, month, day, hour, minute, second, millisecond := carbon.Parse("2020-08-05 13:14:15.999999999").DateTimeMilli()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
fmt.Println(millisecond)
Output:

2020
8
5
13
14
15
999

func (*Carbon) DateTimeNano

func (c *Carbon) DateTimeNano() (year, month, day, hour, minute, second, nanosecond int)

DateTimeNano gets current year, month, day, hour, minute, second and nanosecond like 2020, 8, 5, 13, 14, 15, 999999999. 获取当前年、月、日、时、分、秒、纳秒

Example
year, month, day, hour, minute, second, nanosecond := carbon.Parse("2020-08-05 13:14:15.999999999").DateTimeNano()

fmt.Println(year)
fmt.Println(month)
fmt.Println(day)
fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
fmt.Println(nanosecond)
Output:

2020
8
5
13
14
15
999999999

func (*Carbon) Day

func (c *Carbon) Day() int

Day gets current day like 5. 获取当前日

Example
fmt.Println(carbon.Parse("2020-08-05").Day())
Output:

5

func (*Carbon) DayOfMonth

func (c *Carbon) DayOfMonth() int

DayOfMonth gets day of month like 30. 获取本月的第几天

Example
fmt.Println(carbon.Parse("2020-01-01").DayOfMonth())
fmt.Println(carbon.Parse("2020-01-05").DayOfMonth())
fmt.Println(carbon.Parse("2020-01-31").DayOfMonth())
Output:

1
5
31

func (*Carbon) DayOfWeek

func (c *Carbon) DayOfWeek() int

DayOfWeek gets day of week like 6, start from 1. 获取本周的第几天

Example
fmt.Println(carbon.Parse("2020-08-03").DayOfWeek())
fmt.Println(carbon.Parse("2020-08-04").DayOfWeek())
fmt.Println(carbon.Parse("2020-08-05").DayOfWeek())
Output:

1
2
3

func (*Carbon) DayOfYear

func (c *Carbon) DayOfYear() int

DayOfYear gets day of year like 365. 获取本年的第几天

Example
fmt.Println(carbon.Parse("2020-01-05").DayOfYear())
fmt.Println(carbon.Parse("2020-02-05").DayOfYear())
fmt.Println(carbon.Parse("2020-03-05").DayOfYear())
fmt.Println(carbon.Parse("2020-04-05").DayOfYear())
Output:

5
36
65
96

func (*Carbon) DaysInMonth

func (c *Carbon) DaysInMonth() int

DaysInMonth gets total days in month like 30. 获取本月的总天数

Example
fmt.Println(carbon.Parse("2020-01-05").DaysInMonth())
fmt.Println(carbon.Parse("2020-02-05").DaysInMonth())
fmt.Println(carbon.Parse("2020-03-05").DaysInMonth())
fmt.Println(carbon.Parse("2020-04-05").DaysInMonth())
Output:

31
29
31
30

func (*Carbon) DaysInYear

func (c *Carbon) DaysInYear() int

DaysInYear gets total days in year like 365. 获取本年的总天数

Example
fmt.Println(carbon.Parse("2020-08-05").DaysInYear())
fmt.Println(carbon.Parse("2021-08-05").DaysInYear())
Output:

366
365

func (*Carbon) Decade

func (c *Carbon) Decade() int

Decade gets current decade like 20. 获取当前年代

Example
fmt.Println(carbon.Parse("2010-08-05").Decade())
fmt.Println(carbon.Parse("2011-08-05").Decade())
fmt.Println(carbon.Parse("2020-08-05").Decade())
fmt.Println(carbon.Parse("2021-08-05").Decade())
Output:

10
10
20
20

func (*Carbon) DiffAbsInDays

func (c *Carbon) DiffAbsInDays(carbon ...*Carbon) int64

DiffAbsInDays gets the difference in days with absolute value. 相差多少天(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInDays(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInDays(carbon.Parse("2020-08-04 13:14:59")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInDays(carbon.Parse("2020-08-06 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInDays(carbon.Parse("2020-08-04 13:00:00")))
Output:

0
0
1
1

func (*Carbon) DiffAbsInDuration

func (c *Carbon) DiffAbsInDuration(carbon ...*Carbon) Duration

DiffAbsInDuration gets the difference in duration with absolute value. 相差时长(绝对值)

Example
defer carbon.CleanTestNow()
now := carbon.Parse("2020-08-05 13:14:15")
carbon.SetTestNow(now)

fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInDuration(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(now.Copy().AddYearsNoOverflow(1).DiffAbsInDuration(now).String())
fmt.Println(now.Copy().SubYearsNoOverflow(1).DiffAbsInDuration(now).String())
fmt.Println(now.Copy().AddMonthsNoOverflow(1).DiffAbsInDuration(now).String())
fmt.Println(now.Copy().SubMonthsNoOverflow(1).DiffAbsInDuration(now).String())
fmt.Println(now.Copy().AddDays(1).DiffAbsInDuration(now).String())
fmt.Println(now.Copy().SubDays(1).DiffAbsInDuration(now).String())
Output:

0s
8760h0m0s
8784h0m0s
744h0m0s
744h0m0s
24h0m0s
24h0m0s

func (*Carbon) DiffAbsInHours

func (c *Carbon) DiffAbsInHours(carbon ...*Carbon) int64

DiffAbsInHours gets the difference in hours with absolute value. 相差多少小时(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInHours(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInHours(carbon.Parse("2020-08-05 14:13:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInHours(carbon.Parse("2020-08-05 12:14:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInHours(carbon.Parse("2020-08-05 14:14:15")))
Output:

0
0
1
1

func (*Carbon) DiffAbsInMinutes

func (c *Carbon) DiffAbsInMinutes(carbon ...*Carbon) int64

DiffAbsInMinutes gets the difference in minutes with absolute value. 相差多少分钟(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMinutes(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMinutes(carbon.Parse("2020-08-05 13:15:10")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMinutes(carbon.Parse("2020-08-05 13:13:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMinutes(carbon.Parse("2020-08-05 13:15:15")))
Output:

0
0
1
1

func (*Carbon) DiffAbsInMonths

func (c *Carbon) DiffAbsInMonths(carbon ...*Carbon) int64

DiffAbsInMonths gets the difference in months with absolute value. 相差多少月(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMonths(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMonths(carbon.Parse("2020-07-28 13:14:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMonths(carbon.Parse("2020-09-06 13:14:59")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInMonths(carbon.Parse("2018-08-28 13:14:59")))
Output:

0
0
1
23

func (*Carbon) DiffAbsInSeconds

func (c *Carbon) DiffAbsInSeconds(carbon ...*Carbon) int64

DiffAbsInSeconds gets the difference in seconds with absolute value. 相差多少秒(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInSeconds(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInSeconds(carbon.Parse("2020-08-05 13:14:15.999999")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInSeconds(carbon.Parse("2020-08-05 13:14:20")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInSeconds(carbon.Parse("2020-08-05 13:14:10")))
Output:

0
0
5
5

func (*Carbon) DiffAbsInString

func (c *Carbon) DiffAbsInString(carbon ...*Carbon) string

DiffAbsInString gets the difference in string with absolute value, i18n is supported. 相差字符串,支持 i18n(绝对值)

Example
defer carbon.CleanTestNow()
now := carbon.Parse("2020-08-05 13:14:15")
carbon.SetTestNow(now)

fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInString(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(now.Copy().AddYearsNoOverflow(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubYearsNoOverflow(1).DiffAbsInString(now))
fmt.Println(now.Copy().AddMonthsNoOverflow(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubMonthsNoOverflow(1).DiffAbsInString(now))
fmt.Println(now.Copy().AddWeeks(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubWeeks(1).DiffAbsInString(now))
fmt.Println(now.Copy().AddDays(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubDays(1).DiffAbsInString(now))
fmt.Println(now.Copy().AddHours(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubHours(1).DiffAbsInString(now))
fmt.Println(now.Copy().AddMinutes(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubMinutes(1).DiffAbsInString(now))
fmt.Println(now.Copy().AddSeconds(1).DiffAbsInString(now))
fmt.Println(now.Copy().SubSeconds(1).DiffAbsInString(now))
Output:

just now
1 year
1 year
1 month
1 month
1 week
1 week
1 day
1 day
1 hour
1 hour
1 minute
1 minute
1 second
1 second

func (*Carbon) DiffAbsInWeeks

func (c *Carbon) DiffAbsInWeeks(carbon ...*Carbon) int64

DiffAbsInWeeks gets the difference in weeks with absolute value. 相差多少周(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInWeeks(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInWeeks(carbon.Parse("2020-07-28 13:14:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInWeeks(carbon.Parse("2020-08-12 13:14:15")))
Output:

0
1
1

func (*Carbon) DiffAbsInYears

func (c *Carbon) DiffAbsInYears(carbon ...*Carbon) int64

DiffAbsInYears gets the difference in years with absolute value. 相差多少年(绝对值)

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInYears(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-12-31 13:14:15").DiffAbsInYears(carbon.Parse("2021-01-01 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInYears(carbon.Parse("2021-08-28 13:14:59")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffAbsInYears(carbon.Parse("2018-08-28 13:14:59")))
Output:

0
0
1
1

func (*Carbon) DiffForHumans

func (c *Carbon) DiffForHumans(carbon ...*Carbon) string

DiffForHumans gets the difference in a human-readable format, i18n is supported. 获取对人类友好的可读格式时间差,支持 i18n

Example
defer carbon.CleanTestNow()
now := carbon.Parse("2020-08-05 13:14:15")
carbon.SetTestNow(now)

fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffForHumans(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-03 13:14:15").DiffForHumans())
fmt.Println(carbon.Parse("2020-08-07 13:14:15").DiffForHumans())
fmt.Println(now.Copy().AddYearsNoOverflow(1).DiffForHumans(now))
fmt.Println(now.Copy().SubYearsNoOverflow(1).DiffForHumans(now))
fmt.Println(now.Copy().AddMonthsNoOverflow(1).DiffForHumans(now))
fmt.Println(now.Copy().SubMonthsNoOverflow(1).DiffForHumans(now))
fmt.Println(now.Copy().AddDays(1).DiffForHumans(now))
fmt.Println(now.Copy().SubDays(1).DiffForHumans(now))
Output:

just now
2 days ago
2 days from now
1 year after
1 year before
1 month after
1 month before
1 day after
1 day before

func (*Carbon) DiffInDays

func (c *Carbon) DiffInDays(carbon ...*Carbon) int64

DiffInDays gets the difference in days. 相差多少天

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInDays(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInDays(carbon.Parse("2020-08-04 13:14:59")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInDays(carbon.Parse("2020-08-06 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInDays(carbon.Parse("2020-08-04 13:00:00")))
Output:

0
0
1
-1

func (*Carbon) DiffInDuration

func (c *Carbon) DiffInDuration(carbon ...*Carbon) Duration

DiffInDuration gets the difference in duration. 相差时长

Example
defer carbon.CleanTestNow()
now := carbon.Parse("2020-08-05 13:14:15")
carbon.SetTestNow(now)

fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInDuration(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(now.Copy().AddYearsNoOverflow(1).DiffInDuration(now).String())
fmt.Println(now.Copy().SubYearsNoOverflow(1).DiffInDuration(now).String())
fmt.Println(now.Copy().AddMonthsNoOverflow(1).DiffInDuration(now).String())
fmt.Println(now.Copy().SubMonthsNoOverflow(1).DiffInDuration(now).String())
fmt.Println(now.Copy().AddDays(1).DiffInDuration(now).String())
fmt.Println(now.Copy().SubDays(1).DiffInDuration(now).String())
Output:

0s
-8760h0m0s
8784h0m0s
-744h0m0s
744h0m0s
-24h0m0s
24h0m0s

func (*Carbon) DiffInHours

func (c *Carbon) DiffInHours(carbon ...*Carbon) int64

DiffInHours gets the difference in hours. 相差多少小时

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInHours(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInHours(carbon.Parse("2020-08-05 14:13:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInHours(carbon.Parse("2020-08-05 12:14:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInHours(carbon.Parse("2020-08-05 14:14:15")))
Output:

0
0
-1
1

func (*Carbon) DiffInMinutes

func (c *Carbon) DiffInMinutes(carbon ...*Carbon) int64

DiffInMinutes gets the difference in minutes. 相差多少分钟

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMinutes(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMinutes(carbon.Parse("2020-08-05 13:15:10")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMinutes(carbon.Parse("2020-08-05 13:13:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMinutes(carbon.Parse("2020-08-05 13:15:15")))
Output:

0
0
-1
1

func (*Carbon) DiffInMonths

func (c *Carbon) DiffInMonths(carbon ...*Carbon) int64

DiffInMonths gets the difference in months. 相差多少月

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMonths(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMonths(carbon.Parse("2020-07-28 13:14:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMonths(carbon.Parse("2020-09-06 13:14:59")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInMonths(carbon.Parse("2018-08-28 13:14:59")))
Output:

0
0
1
-23

func (*Carbon) DiffInSeconds

func (c *Carbon) DiffInSeconds(carbon ...*Carbon) int64

DiffInSeconds gets the difference in seconds. 相差多少秒

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInSeconds(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInSeconds(carbon.Parse("2020-08-05 13:14:15.999999")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInSeconds(carbon.Parse("2020-08-05 13:14:20")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInSeconds(carbon.Parse("2020-08-05 13:14:10")))
Output:

0
0
5
-5

func (*Carbon) DiffInString

func (c *Carbon) DiffInString(carbon ...*Carbon) string

DiffInString gets the difference in string, i18n is supported. 相差字符串,支持 i18n

Example
defer carbon.CleanTestNow()
now := carbon.Parse("2020-08-05 13:14:15")
carbon.SetTestNow(now)

fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInString(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(now.Copy().AddYearsNoOverflow(1).DiffInString(now))
fmt.Println(now.Copy().SubYearsNoOverflow(1).DiffInString(now))
fmt.Println(now.Copy().AddMonthsNoOverflow(1).DiffInString(now))
fmt.Println(now.Copy().SubMonthsNoOverflow(1).DiffInString(now))
fmt.Println(now.Copy().AddWeeks(1).DiffInString(now))
fmt.Println(now.Copy().SubWeeks(1).DiffInString(now))
fmt.Println(now.Copy().AddDays(1).DiffInString(now))
fmt.Println(now.Copy().SubDays(1).DiffInString(now))
fmt.Println(now.Copy().AddHours(1).DiffInString(now))
fmt.Println(now.Copy().SubHours(1).DiffInString(now))
fmt.Println(now.Copy().AddMinutes(1).DiffInString(now))
fmt.Println(now.Copy().SubMinutes(1).DiffInString(now))
fmt.Println(now.Copy().AddSeconds(1).DiffInString(now))
fmt.Println(now.Copy().SubSeconds(1).DiffInString(now))
Output:

just now
-1 year
1 year
-1 month
1 month
-1 week
1 week
-1 day
1 day
-1 hour
1 hour
-1 minute
1 minute
-1 second
1 second

func (*Carbon) DiffInWeeks

func (c *Carbon) DiffInWeeks(carbon ...*Carbon) int64

DiffInWeeks gets the difference in weeks. 相差多少周

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInWeeks(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInWeeks(carbon.Parse("2020-07-28 13:14:00")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInWeeks(carbon.Parse("2020-08-12 13:14:15")))
Output:

0
-1
1

func (*Carbon) DiffInYears

func (c *Carbon) DiffInYears(carbon ...*Carbon) int64

DiffInYears gets the difference in years. 相差多少年

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInYears(carbon.Parse("2020-08-05 13:14:15")))
fmt.Println(carbon.Parse("2020-12-31 13:14:15").DiffInYears(carbon.Parse("2021-01-01 13:14:15")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInYears(carbon.Parse("2021-08-28 13:14:59")))
fmt.Println(carbon.Parse("2020-08-05 13:14:15").DiffInYears(carbon.Parse("2018-08-28 13:14:59")))
Output:

0
0
1
-1

func (*Carbon) EndOfCentury

func (c *Carbon) EndOfCentury() *Carbon

EndOfCentury returns a Carbon instance for end of the century. 本世纪结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfCentury().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfCentury().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfCentury().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfCentury().ToString())
Output:

0099-12-31 23:59:59.999999999 +0000 UTC
2099-12-31 23:59:59.999999999 +0000 UTC
2099-12-31 23:59:59.999999999 +0000 UTC
2099-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfDay

func (c *Carbon) EndOfDay() *Carbon

EndOfDay returns a Carbon instance for end of the day. 本日结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfDay().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfDay().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfDay().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfDay().ToString())
Output:

0001-01-01 23:59:59.999999999 +0000 UTC
2020-01-01 23:59:59.999999999 +0000 UTC
2020-08-15 23:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfDecade

func (c *Carbon) EndOfDecade() *Carbon

EndOfDecade returns a Carbon instance for end of the decade. 本年代结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfDecade().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfDecade().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfDecade().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfDecade().ToString())
Output:

0009-12-31 23:59:59.999999999 +0000 UTC
2029-12-31 23:59:59.999999999 +0000 UTC
2029-12-31 23:59:59.999999999 +0000 UTC
2029-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfHour

func (c *Carbon) EndOfHour() *Carbon

EndOfHour returns a Carbon instance for end of the hour. 小时结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfHour().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfHour().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfHour().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfHour().ToString())
Output:

0001-01-01 00:59:59.999999999 +0000 UTC
2020-01-01 00:59:59.999999999 +0000 UTC
2020-08-15 12:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfMinute

func (c *Carbon) EndOfMinute() *Carbon

EndOfMinute returns a Carbon instance for end of the minute. 分钟结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfMinute().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfMinute().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfMinute().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfMinute().ToString())
Output:

0001-01-01 00:00:59.999999999 +0000 UTC
2020-01-01 00:00:59.999999999 +0000 UTC
2020-08-15 12:30:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfMonth

func (c *Carbon) EndOfMonth() *Carbon

EndOfMonth returns a Carbon instance for end of the month. 本月结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfMonth().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfMonth().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfMonth().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfMonth().ToString())
Output:

0001-01-31 23:59:59.999999999 +0000 UTC
2020-01-31 23:59:59.999999999 +0000 UTC
2020-08-31 23:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfQuarter

func (c *Carbon) EndOfQuarter() *Carbon

EndOfQuarter returns a Carbon instance for end of the quarter. 本季度结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfQuarter().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfQuarter().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfQuarter().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfQuarter().ToString())
Output:

0001-03-31 23:59:59.999999999 +0000 UTC
2020-03-31 23:59:59.999999999 +0000 UTC
2020-09-30 23:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfSeason

func (c *Carbon) EndOfSeason() *Carbon

EndOfSeason returns a Carbon instance for end of the season. 本季节结束时间

Example
fmt.Println(carbon.Parse("2020-01-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-02-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-03-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-04-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-05-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-06-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-07-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-08-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-09-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-10-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-11-15").EndOfSeason().ToString())
fmt.Println(carbon.Parse("2020-12-15").EndOfSeason().ToString())
Output:

2020-02-29 23:59:59.999999999 +0000 UTC
2020-02-29 23:59:59.999999999 +0000 UTC
2020-05-31 23:59:59.999999999 +0000 UTC
2020-05-31 23:59:59.999999999 +0000 UTC
2020-05-31 23:59:59.999999999 +0000 UTC
2020-08-31 23:59:59.999999999 +0000 UTC
2020-08-31 23:59:59.999999999 +0000 UTC
2020-08-31 23:59:59.999999999 +0000 UTC
2020-11-30 23:59:59.999999999 +0000 UTC
2020-11-30 23:59:59.999999999 +0000 UTC
2020-11-30 23:59:59.999999999 +0000 UTC
2021-02-28 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfSecond

func (c *Carbon) EndOfSecond() *Carbon

EndOfSecond returns a Carbon instance for end of the second. 秒结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfSecond().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfSecond().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfSecond().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfSecond().ToString())
Output:

0001-01-01 00:00:00.999999999 +0000 UTC
2020-01-01 00:00:00.999999999 +0000 UTC
2020-08-15 12:30:30.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfWeek

func (c *Carbon) EndOfWeek() *Carbon

EndOfWeek returns a Carbon instance for end of the week. 本周结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfWeek().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfWeek().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfWeek().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfWeek().ToString())
Output:

0001-01-07 23:59:59.999999999 +0000 UTC
2020-01-05 23:59:59.999999999 +0000 UTC
2020-08-16 23:59:59.999999999 +0000 UTC
2021-01-03 23:59:59.999999999 +0000 UTC

func (*Carbon) EndOfYear

func (c *Carbon) EndOfYear() *Carbon

EndOfYear returns a Carbon instance for end of the year. 本年结束时间

Example
fmt.Println(carbon.NewCarbon().EndOfYear().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").EndOfYear().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").EndOfYear().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").EndOfYear().ToString())
Output:

0001-12-31 23:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC
2020-12-31 23:59:59.999999999 +0000 UTC

func (*Carbon) Eq

func (c *Carbon) Eq(t *Carbon) bool

Eq reports whether equal. 是否等于

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Eq(carbon.Parse("2020-08-05 21:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Eq(carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Eq(carbon.Parse("2020-08-05 23:00:00")))
Output:

false
true
false

func (*Carbon) Farthest

func (c *Carbon) Farthest(c1 *Carbon, c2 *Carbon) *Carbon

Farthest returns the farthest Carbon instance from the given Carbon instance. 返回离给定 carbon 实例最远的 Carbon 实例

Example
fmt.Println(carbon.Parse("2020-08-05").Farthest(carbon.Parse("2020-08-06"), carbon.Parse("2021-08-05")).ToString())
Output:

2021-08-05 00:00:00 +0000 UTC

func (*Carbon) Format

func (c *Carbon) Format(format string, timezone ...string) string

Format outputs a string by format. 输出指定格式模板的时间字符串

Example
fmt.Printf("Y-m-d H:i:s format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format(carbon.DateTimeFormat))
fmt.Printf("Y-m-d format: %s\n", carbon.Parse("2020-08-05T13:14:15.999999999+00:00").Format(carbon.DateFormat))
fmt.Printf("Y-m-d H:i:s with PRC timezone format: %s\n", carbon.Parse("2020-08-05", carbon.PRC).Format(carbon.DateTimeFormat, carbon.PRC))
fmt.Printf("Y年m月d日 format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("Y年m月d日"))
fmt.Printf("D format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("D"))
fmt.Printf("l format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("l"))
fmt.Printf("F format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("F"))
fmt.Printf("M format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("M"))
fmt.Printf("j format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("j"))
fmt.Printf("W format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("W"))
fmt.Printf("F format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("F"))
fmt.Printf("N format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("N"))
fmt.Printf("L format: %s\n", carbon.Parse("2020-08-05 01:14:15").Format("L"))
fmt.Printf("L format: %s\n", carbon.Parse("2021-08-05 13:14:15").Format("L"))
fmt.Printf("G format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("G"))
fmt.Printf("S format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("S"))
fmt.Printf("U format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("U"))
fmt.Printf("V format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("V"))
fmt.Printf("X format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("X"))
fmt.Printf("u format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("u"))
fmt.Printf("v format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("v"))
fmt.Printf("x format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("x"))

fmt.Printf("w format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("w"))
fmt.Printf("t format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("t"))
fmt.Printf("z format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.PRC).Format("z"))
fmt.Printf("o format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.PRC).Format("o"))
fmt.Printf("q format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("q"))
fmt.Printf("c format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999").Format("c"))
fmt.Printf("R format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.UTC).Format("R"))
fmt.Printf("R format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.PRC).Format("R"))
fmt.Printf("Q format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.UTC).Format("Q"))
fmt.Printf("Q format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.PRC).Format("Q"))
fmt.Printf("Z format: %s\n", carbon.Parse("2020-08-05 13:14:15.999999999", carbon.PRC).Format("Z"))
fmt.Printf("jK format: %s\n", carbon.Parse("2020-08-05 13:14:15").Format("jK"))
fmt.Printf("jK format: %s\n", carbon.Parse("2020-08-22 13:14:15").Format("jK"))
fmt.Printf("jK format: %s\n", carbon.Parse("2020-08-23 13:14:15").Format("jK"))
fmt.Printf("jK format: %s\n", carbon.Parse("2020-08-31 13:14:15").Format("jK"))

fmt.Printf("timestamp format: %s\n", carbon.Parse("2020-08-05T13:14:15.999999999+00:00").Format(carbon.TimestampFormat))
fmt.Printf("TimestampMilli format: %s\n", carbon.Parse("2020-08-05T13:14:15.999999999+00:00").Format(carbon.TimestampMilliFormat))
fmt.Printf("timestampMicro format: %s\n", carbon.Parse("2020-08-05T13:14:15.999999999+00:00").Format(carbon.TimestampMicroFormat))
fmt.Printf("timestampNano format: %s\n", carbon.Parse("2020-08-05T13:14:15.999999999+00:00").Format(carbon.TimestampNanoFormat))

fmt.Printf("I\\t \\i\\s Y-m-d H:i:s format: %s\n", carbon.Parse("2020-08-31 13:14:15").Format("I\\t \\i\\s Y-m-d H:i:s"))
fmt.Printf("上次打卡时间:Y-m-d H:i:s,请每日按时打卡 format: %s\n", carbon.Parse("2020-08-31 13:14:15").Format("上次打卡时间:Y-m-d H:i:s,请每日按时打卡"))
Output:

Y-m-d H:i:s format: 2020-08-05 13:14:15
Y-m-d format: 2020-08-05
Y-m-d H:i:s with PRC timezone format: 2020-08-05 00:00:00
Y年m月d日 format: 2020年08月05日
D format: Wed
l format: Wednesday
F format: August
M format: Aug
j format: 5
W format: 32
F format: August
N format: 03
L format: 1
L format: 0
G format: 13
S format: 1596633255
U format: 1596633255000
V format: 1596633255000000
X format: 1596633255000000000
u format: 999
v format: 999999
x format: 999999999
w format: 2
t format: 31
z format: PRC
o format: 28800
q format: 3
c format: 21
R format: Z
R format: +08:00
Q format: Z
Q format: +0800
Z format: CST
jK format: 5th
jK format: 22nd
jK format: 23rd
jK format: 31st
timestamp format: 1596633255
TimestampMilli format: 1596633255999
timestampMicro format: 1596633255999999
timestampNano format: 1596633255999999999
I\t \i\s Y-m-d H:i:s format: It is 2020-08-31 13:14:15
上次打卡时间:Y-m-d H:i:s,请每日按时打卡 format: 上次打卡时间:2020-08-31 13:14:15,请每日按时打卡

func (*Carbon) GoString

func (c *Carbon) GoString() string

GoString implements fmt.GoStringer and formats c to be printed in Go source code. 实现 fmt.GoStringer 接口,并格式化 c 以在 Go 源代码中打印

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").GoString())
fmt.Println(carbon.Parse("2020-08-05 13:14:15", carbon.PRC).GoString())
Output:

time.Date(2020, time.August, 5, 13, 14, 15, 0, time.UTC)
time.Date(2020, time.August, 5, 13, 14, 15, 0, time.Location("PRC"))

func (*Carbon) Gt

func (c *Carbon) Gt(t *Carbon) bool

Gt reports whether greater than. 是否大于

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Gt(carbon.Parse("2020-08-05 21:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Gt(carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Gt(carbon.Parse("2020-08-05 23:00:00")))
Output:

true
false
false

func (*Carbon) Gte

func (c *Carbon) Gte(t *Carbon) bool

Gte reports whether greater than or equal. 是否大于等于

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Gte(carbon.Parse("2020-08-05 21:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Gte(carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Gte(carbon.Parse("2020-08-05 23:00:00")))
Output:

true
true
false

func (*Carbon) HasError added in v2.6.0

func (c *Carbon) HasError() bool

HasError reports whether it has error. 是否有错误

Example
fmt.Println(carbon.NewCarbon().HasError())
fmt.Println(carbon.Parse("").HasError())
fmt.Println(carbon.Now().HasError())
fmt.Println(carbon.Parse("xxx").HasError())
Output:

false
false
false
true

func (*Carbon) Hour

func (c *Carbon) Hour() int

Hour gets current hour like 13. 获取当前小时

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Hour())
Output:

13

func (*Carbon) IsAM

func (c *Carbon) IsAM() bool

IsAM reports whether is before noon. 是否是上午

Example
fmt.Println(carbon.Parse("2020-08-08 00:00:00").IsAM())
fmt.Println(carbon.Parse("2020-08-08 12:00:00").IsAM())
fmt.Println(carbon.Parse("2020-08-08 23:59:59").IsAM())
Output:

true
false
false

func (*Carbon) IsApril

func (c *Carbon) IsApril() bool

IsApril reports whether is April. 是否是四月

Example
fmt.Println(carbon.Parse("2020-04-01").IsApril())
fmt.Println(carbon.Parse("2020-05-01").IsApril())
Output:

true
false

func (*Carbon) IsAquarius

func (c *Carbon) IsAquarius() bool

IsAquarius reports whether is Aquarius. 是否是水瓶座

Example
fmt.Println(carbon.Parse("2020-01-20").IsAquarius())
fmt.Println(carbon.Parse("2020-08-05").IsAquarius())
Output:

true
false

func (*Carbon) IsAries

func (c *Carbon) IsAries() bool

IsAries reports whether is Aries. 是否是白羊座

Example
fmt.Println(carbon.Parse("2020-04-20").IsTaurus())
fmt.Println(carbon.Parse("2020-08-05").IsTaurus())
Output:

true
false

func (*Carbon) IsAugust

func (c *Carbon) IsAugust() bool

IsAugust reports whether is August. 是否是八月

Example
fmt.Println(carbon.Parse("2020-08-01").IsAugust())
fmt.Println(carbon.Parse("2020-09-01").IsAugust())
Output:

true
false

func (*Carbon) IsAutumn

func (c *Carbon) IsAutumn() bool

IsAutumn reports whether is autumn. 是否是秋季

Example
fmt.Println(carbon.Parse("2020-01-01").IsAutumn())
fmt.Println(carbon.Parse("2020-09-01").IsAutumn())
Output:

false
true

func (*Carbon) IsCancer

func (c *Carbon) IsCancer() bool

IsCancer reports whether is Cancer. 是否是巨蟹座

Example
fmt.Println(carbon.Parse("2020-06-22").IsCancer())
fmt.Println(carbon.Parse("2020-08-05").IsCancer())
Output:

true
false

func (*Carbon) IsCapricorn

func (c *Carbon) IsCapricorn() bool

IsCapricorn reports whether is Capricorn. 是否是摩羯座

Example
fmt.Println(carbon.Parse("2020-12-22").IsCapricorn())
fmt.Println(carbon.Parse("2020-08-05").IsCapricorn())
Output:

true
false

func (*Carbon) IsDST

func (c *Carbon) IsDST() bool

IsDST reports whether is a daylight saving time. 是否是夏令时

Example
tzWithDST, tzWithoutDST := "Australia/Sydney", "Australia/Brisbane"
fmt.Println(carbon.Parse("2009-01-01", tzWithDST).IsDST())
fmt.Println(carbon.Parse("2009-01-01", tzWithoutDST).IsDST())
Output:

true
false

func (*Carbon) IsDecember

func (c *Carbon) IsDecember() bool

IsDecember reports whether is December. 是否是十二月

Example
fmt.Println(carbon.Parse("2020-12-01").IsDecember())
fmt.Println(carbon.Parse("2020-01-01").IsDecember())
Output:

true
false

func (*Carbon) IsEpoch added in v2.6.3

func (c *Carbon) IsEpoch() bool

IsEpoch reports whether is a unix epoch time(1970-01-01 00:00:00 +0000 UTC). 是否是 UNIX 纪元时间(1970-01-01 00:00:00 +0000 UTC)

Example
fmt.Println(carbon.CreateFromDateTimeNano(1970, 1, 1, 0, 0, 0, 0, carbon.UTC).IsEpoch())
fmt.Println(carbon.CreateFromTimestamp(0).IsEpoch())
fmt.Println(carbon.NewCarbon().IsEpoch())
fmt.Println(carbon.Parse("").IsEpoch())
fmt.Println(carbon.Parse("xxx").IsEpoch())
fmt.Println(carbon.Now().IsEpoch())
Output:

true
true
false
false
false
false

func (*Carbon) IsFebruary

func (c *Carbon) IsFebruary() bool

IsFebruary reports whether is February. 是否是二月

Example
fmt.Println(carbon.Parse("2020-02-01").IsFebruary())
fmt.Println(carbon.Parse("2020-03-01").IsFebruary())
Output:

true
false

func (*Carbon) IsFriday

func (c *Carbon) IsFriday() bool

IsFriday reports whether is Friday. 是否是周五

Example
fmt.Println(carbon.Parse("2025-03-07").IsFriday())
fmt.Println(carbon.Parse("2025-03-08").IsFriday())
Output:

true
false

func (*Carbon) IsFuture

func (c *Carbon) IsFuture() bool

IsFuture reports whether is future time. 是否是未来时间

Example
fmt.Println(carbon.Yesterday().IsFuture())
fmt.Println(carbon.Now().IsFuture())
fmt.Println(carbon.Tomorrow().IsFuture())
fmt.Println(carbon.Parse("2025-03-01").IsFuture())
Output:

false
false
true
false

func (*Carbon) IsGemini

func (c *Carbon) IsGemini() bool

IsGemini reports whether is Gemini. 是否是双子座

Example
fmt.Println(carbon.Parse("2020-06-21").IsGemini())
fmt.Println(carbon.Parse("2020-08-05").IsGemini())
Output:

true
false

func (*Carbon) IsInvalid

func (c *Carbon) IsInvalid() bool

IsInvalid reports whether is an invalid time. 是否是无效时间

Example
fmt.Println(carbon.NewCarbon().IsInvalid())
fmt.Println(carbon.Parse("").IsInvalid())
fmt.Println(carbon.Parse("xxx").IsInvalid())
fmt.Println(carbon.Now().IsInvalid())
Output:

false
true
true
false

func (*Carbon) IsJanuary

func (c *Carbon) IsJanuary() bool

IsJanuary reports whether is January. 是否是一月

Example
fmt.Println(carbon.Parse("2020-01-01").IsJanuary())
fmt.Println(carbon.Parse("2020-02-01").IsJanuary())
Output:

true
false

func (*Carbon) IsJuly

func (c *Carbon) IsJuly() bool

IsJuly reports whether is July. 是否是七月

Example
fmt.Println(carbon.Parse("2020-07-01").IsJuly())
fmt.Println(carbon.Parse("2020-08-01").IsJuly())
Output:

true
false

func (*Carbon) IsJune

func (c *Carbon) IsJune() bool

IsJune reports whether is June. 是否是六月

Example
fmt.Println(carbon.Parse("2020-06-01").IsJune())
fmt.Println(carbon.Parse("2020-07-01").IsJune())
Output:

true
false

func (*Carbon) IsLeapYear

func (c *Carbon) IsLeapYear() bool

IsLeapYear reports whether is a leap year. 是否是闰年

Example
fmt.Println(carbon.Parse("2015-01-01").IsLeapYear())
fmt.Println(carbon.Parse("2016-01-01").IsLeapYear())
Output:

false
true

func (*Carbon) IsLeo

func (c *Carbon) IsLeo() bool

IsLeo reports whether is Leo. 是否是狮子座

Example
fmt.Println(carbon.Parse("2020-07-23").IsLeo())
fmt.Println(carbon.Parse("2020-09-01").IsLeo())
Output:

true
false

func (*Carbon) IsLibra

func (c *Carbon) IsLibra() bool

IsLibra reports whether is Libra. 是否是天秤座

Example
fmt.Println(carbon.Parse("2020-09-23").IsLibra())
fmt.Println(carbon.Parse("2020-08-05").IsLibra())
Output:

true
false

func (*Carbon) IsLongYear

func (c *Carbon) IsLongYear() bool

IsLongYear reports whether is a long year, see https://en.wikipedia.org/wiki/ISO_8601#Week_dates. 是否是长年

Example
fmt.Println(carbon.Parse("2015-01-01").IsLongYear())
fmt.Println(carbon.Parse("2016-01-01").IsLongYear())
Output:

true
false

func (*Carbon) IsMarch

func (c *Carbon) IsMarch() bool

IsMarch reports whether is March. 是否是三月

Example
fmt.Println(carbon.Parse("2020-03-01").IsMarch())
fmt.Println(carbon.Parse("2020-04-01").IsMarch())
Output:

true
false

func (*Carbon) IsMay

func (c *Carbon) IsMay() bool

IsMay reports whether is May. 是否是五月

Example
fmt.Println(carbon.Parse("2020-05-01").IsMay())
fmt.Println(carbon.Parse("2020-06-01").IsMay())
Output:

true
false

func (*Carbon) IsMonday

func (c *Carbon) IsMonday() bool

IsMonday reports whether is Monday. 是否是周一

Example
fmt.Println(carbon.Parse("2025-03-03").IsMonday())
fmt.Println(carbon.Parse("2025-03-04").IsMonday())
Output:

true
false

func (*Carbon) IsNil added in v2.6.0

func (c *Carbon) IsNil() bool

IsNil reports whether is a nil time. 是否是空时间

Example
fmt.Println(carbon.NewCarbon().IsNil())
fmt.Println(carbon.Parse("xxx").IsNil())
fmt.Println(carbon.Now().IsNil())
fmt.Println(carbon.Parse("").IsNil())
Output:

false
false
false
true

func (*Carbon) IsNovember

func (c *Carbon) IsNovember() bool

IsNovember reports whether is November. 是否是十一月

Example
fmt.Println(carbon.Parse("2020-11-01").IsNovember())
fmt.Println(carbon.Parse("2020-12-01").IsNovember())
Output:

true
false

func (*Carbon) IsNow

func (c *Carbon) IsNow() bool

IsNow reports whether is now time. 是否是当前时间

Example
fmt.Println(carbon.Yesterday().IsNow())
fmt.Println(carbon.Now().IsNow())
fmt.Println(carbon.Tomorrow().IsNow())
fmt.Println(carbon.Parse("2025-03-01").IsNow())
Output:

false
true
false
false

func (*Carbon) IsOctober

func (c *Carbon) IsOctober() bool

IsOctober reports whether is October. 是否是十月

Example
fmt.Println(carbon.Parse("2020-10-01").IsOctober())
fmt.Println(carbon.Parse("2020-11-01").IsOctober())
Output:

true
false

func (*Carbon) IsPM

func (c *Carbon) IsPM() bool

IsPM reports whether is after noon. 是否是下午

Example
fmt.Println(carbon.Parse("2020-08-08 00:00:00").IsPM())
fmt.Println(carbon.Parse("2020-08-08 12:00:00").IsPM())
fmt.Println(carbon.Parse("2020-08-08 23:59:59").IsPM())
Output:

false
true
true

func (*Carbon) IsPast

func (c *Carbon) IsPast() bool

IsPast reports whether is past time. 是否是过去时间

Example
fmt.Println(carbon.Yesterday().IsPast())
fmt.Println(carbon.Now().IsPast())
fmt.Println(carbon.Tomorrow().IsPast())
fmt.Println(carbon.Parse("2025-03-01").IsPast())
Output:

true
false
false
true

func (*Carbon) IsPisces

func (c *Carbon) IsPisces() bool

IsPisces reports whether is Pisces. 是否是双鱼座

Example
fmt.Println(carbon.Parse("2020-02-19").IsPisces())
fmt.Println(carbon.Parse("2020-08-05").IsPisces())
Output:

true
false

func (*Carbon) IsSagittarius

func (c *Carbon) IsSagittarius() bool

IsSagittarius reports whether is Sagittarius. 是否是射手座

Example
fmt.Println(carbon.Parse("2020-11-23").IsSagittarius())
fmt.Println(carbon.Parse("2020-08-05").IsSagittarius())
Output:

true
false

func (*Carbon) IsSameCentury

func (c *Carbon) IsSameCentury(t *Carbon) bool

IsSameCentury reports whether is same century. 是否是同一世纪

Example
fmt.Println(carbon.Parse("2020-08-05").IsSameCentury(carbon.Parse("2010-01-01")))
fmt.Println(carbon.Parse("2020-08-05").IsSameCentury(carbon.Parse("2030-12-31")))
fmt.Println(carbon.Parse("2020-08-05").IsSameCentury(carbon.Parse("2100-08-05")))
Output:

true
true
false

func (*Carbon) IsSameDay

func (c *Carbon) IsSameDay(t *Carbon) bool

IsSameDay reports whether is same day. 是否是同一天

Example
fmt.Println(carbon.Parse("2020-08-05 00:00:00").IsSameDay(carbon.Parse("2020-08-05 23:59:59")))
fmt.Println(carbon.Parse("2020-08-05 00:00:00").IsSameDay(carbon.Parse("2021-08-05 00:00:00")))
fmt.Println(carbon.Parse("2020-08-05 00:00:00").IsSameDay(carbon.Parse("2020-09-05 00:00:00")))
Output:

true
false
false

func (*Carbon) IsSameDecade

func (c *Carbon) IsSameDecade(t *Carbon) bool

IsSameDecade reports whether is same decade. 是否是同一年代

Example
fmt.Println(carbon.Parse("2020-08-05").IsSameDecade(carbon.Parse("2020-01-01")))
fmt.Println(carbon.Parse("2020-08-05").IsSameDecade(carbon.Parse("2020-12-31")))
fmt.Println(carbon.Parse("2020-08-05").IsSameDecade(carbon.Parse("2010-08-05")))
Output:

true
true
false

func (*Carbon) IsSameHour

func (c *Carbon) IsSameHour(t *Carbon) bool

IsSameHour reports whether is same hour. 是否是同一小时

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameHour(carbon.Parse("2020-08-05 22:59:59")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameHour(carbon.Parse("2021-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameHour(carbon.Parse("2020-09-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameHour(carbon.Parse("2020-08-06 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameHour(carbon.Parse("2020-08-05 23:00:00")))
Output:

true
false
false
false
false

func (*Carbon) IsSameMinute

func (c *Carbon) IsSameMinute(t *Carbon) bool

IsSameMinute reports whether is same minute. 是否是同一分钟

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameMinute(carbon.Parse("2020-08-05 22:00:59")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameMinute(carbon.Parse("2021-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameMinute(carbon.Parse("2020-08-06 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameMinute(carbon.Parse("2020-08-05 23:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameMinute(carbon.Parse("2020-08-05 22:01:00")))
Output:

true
false
false
false
false

func (*Carbon) IsSameMonth

func (c *Carbon) IsSameMonth(t *Carbon) bool

IsSameMonth reports whether is same month. 是否是同一月

Example
fmt.Println(carbon.Parse("2020-08-05").IsSameMonth(carbon.Parse("2020-08-01")))
fmt.Println(carbon.Parse("2020-08-05").IsSameMonth(carbon.Parse("2010-08-05")))
fmt.Println(carbon.Parse("2020-08-05").IsSameMonth(carbon.Parse("2020-09-05")))
Output:

true
false
false

func (*Carbon) IsSameQuarter

func (c *Carbon) IsSameQuarter(t *Carbon) bool

IsSameQuarter reports whether is same quarter. 是否是同一季节

Example
fmt.Println(carbon.Parse("2020-08-05").IsSameQuarter(carbon.Parse("2020-08-06")))
fmt.Println(carbon.Parse("2020-08-05").IsSameQuarter(carbon.Parse("2010-08-05")))
fmt.Println(carbon.Parse("2020-08-05").IsSameQuarter(carbon.Parse("2010-01-05")))
Output:

true
false
false

func (*Carbon) IsSameSecond

func (c *Carbon) IsSameSecond(t *Carbon) bool

IsSameSecond reports whether is same second. 是否是同一秒

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameSecond(carbon.Parse("2020-08-05 22:00:00.999999")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").IsSameSecond(carbon.Parse("2021-08-05 22:00:00")))
Output:

true
false

func (*Carbon) IsSameYear

func (c *Carbon) IsSameYear(t *Carbon) bool

IsSameYear reports whether is same year. 是否是同一年

Example
fmt.Println(carbon.Parse("2020-08-05").IsSameYear(carbon.Parse("2010-08-05")))
fmt.Println(carbon.Parse("2020-08-05").IsSameYear(carbon.Parse("2020-01-01")))
fmt.Println(carbon.Parse("2020-08-05").IsSameYear(carbon.Parse("2020-12-31")))
Output:

false
true
true

func (*Carbon) IsSaturday

func (c *Carbon) IsSaturday() bool

IsSaturday reports whether is Saturday. 是否是周六

Example
fmt.Println(carbon.Parse("2025-03-08").IsSaturday())
fmt.Println(carbon.Parse("2025-03-09").IsSaturday())
Output:

true
false

func (*Carbon) IsScorpio

func (c *Carbon) IsScorpio() bool

IsScorpio reports whether is Scorpio. 是否是天蝎座

Example
fmt.Println(carbon.Parse("2020-10-24").IsScorpio())
fmt.Println(carbon.Parse("2020-08-05").IsScorpio())
Output:

true
false

func (*Carbon) IsSeptember

func (c *Carbon) IsSeptember() bool

IsSeptember reports whether is September. 是否是九月

Example
fmt.Println(carbon.Parse("2020-09-01").IsSeptember())
fmt.Println(carbon.Parse("2020-10-01").IsSeptember())
Output:

true
false

func (*Carbon) IsSpring

func (c *Carbon) IsSpring() bool

IsSpring reports whether is spring. 是否是春季

Example
fmt.Println(carbon.Parse("2020-01-01").IsSpring())
fmt.Println(carbon.Parse("2020-03-01").IsSpring())
Output:

false
true

func (*Carbon) IsSummer

func (c *Carbon) IsSummer() bool

IsSummer reports whether is summer. 是否是夏季

Example
fmt.Println(carbon.Parse("2020-01-01").IsSummer())
fmt.Println(carbon.Parse("2020-06-01").IsSummer())
Output:

false
true

func (*Carbon) IsSunday

func (c *Carbon) IsSunday() bool

IsSunday reports whether is Sunday. 是否是周日

Example
fmt.Println(carbon.Parse("2025-03-09").IsSunday())
fmt.Println(carbon.Parse("2025-03-10").IsSunday())
Output:

true
false

func (*Carbon) IsTaurus

func (c *Carbon) IsTaurus() bool

IsTaurus reports whether is Taurus. 是否是金牛座

func (*Carbon) IsThursday

func (c *Carbon) IsThursday() bool

IsThursday reports whether is Thursday. 是否是周四

Example
fmt.Println(carbon.Parse("2025-03-06").IsThursday())
fmt.Println(carbon.Parse("2025-03-07").IsThursday())
Output:

true
false

func (*Carbon) IsToday

func (c *Carbon) IsToday() bool

IsToday reports whether is today. 是否是今天

Example
fmt.Println(carbon.Yesterday().IsToday())
fmt.Println(carbon.Now().IsToday())
fmt.Println(carbon.Tomorrow().IsToday())
fmt.Println(carbon.Parse("2025-03-01").IsToday())
Output:

false
true
false
false

func (*Carbon) IsTomorrow

func (c *Carbon) IsTomorrow() bool

IsTomorrow reports whether is tomorrow. 是否是明天

Example
fmt.Println(carbon.Yesterday().IsTomorrow())
fmt.Println(carbon.Now().IsTomorrow())
fmt.Println(carbon.Tomorrow().IsTomorrow())
fmt.Println(carbon.Parse("2025-03-01").IsTomorrow())
Output:

false
false
true
false

func (*Carbon) IsTuesday

func (c *Carbon) IsTuesday() bool

IsTuesday reports whether is Tuesday. 是否是周二

Example
fmt.Println(carbon.Parse("2025-03-04").IsTuesday())
fmt.Println(carbon.Parse("2025-03-05").IsTuesday())
Output:

true
false

func (*Carbon) IsValid

func (c *Carbon) IsValid() bool

IsValid reports whether is a valid time. 是否是有效时间

Example
fmt.Println(carbon.NewCarbon().IsValid())
fmt.Println(carbon.Now().IsValid())
fmt.Println(carbon.Parse("").IsValid())
fmt.Println(carbon.Parse("xxx").IsValid())
Output:

true
true
false
false

func (*Carbon) IsVirgo

func (c *Carbon) IsVirgo() bool

IsVirgo reports whether is Virgo. 是否是处女座

Example
fmt.Println(carbon.Parse("2020-08-23").IsVirgo())
fmt.Println(carbon.Parse("2020-08-05").IsVirgo())
Output:

true
false

func (*Carbon) IsWednesday

func (c *Carbon) IsWednesday() bool

IsWednesday reports whether is Wednesday. 是否是周三

Example
fmt.Println(carbon.Parse("2025-03-05").IsWednesday())
fmt.Println(carbon.Parse("2025-03-06").IsWednesday())
Output:

true
false

func (*Carbon) IsWeekday

func (c *Carbon) IsWeekday() bool

IsWeekday reports whether is weekday. 是否是工作日

Example
fmt.Println(carbon.Parse("2025-03-01").IsWeekday())
fmt.Println(carbon.Parse("2025-03-02").IsWeekday())
fmt.Println(carbon.Parse("2025-03-03").IsWeekday())
Output:

false
false
true

func (*Carbon) IsWeekend

func (c *Carbon) IsWeekend() bool

IsWeekend reports whether is weekend. 是否是周末

Example
fmt.Println(carbon.Parse("2025-03-01").IsWeekend())
fmt.Println(carbon.Parse("2025-03-02").IsWeekend())
fmt.Println(carbon.Parse("2025-03-03").IsWeekend())
Output:

true
true
false

func (*Carbon) IsWinter

func (c *Carbon) IsWinter() bool

IsWinter reports whether is winter. 是否是冬季

Example
fmt.Println(carbon.Parse("2020-01-01").IsWinter())
fmt.Println(carbon.Parse("2020-05-01").IsWinter())
Output:

true
false

func (*Carbon) IsYesterday

func (c *Carbon) IsYesterday() bool

IsYesterday reports whether is yesterday. 是否是昨天

Example
fmt.Println(carbon.Yesterday().IsYesterday())
fmt.Println(carbon.Now().IsYesterday())
fmt.Println(carbon.Tomorrow().IsYesterday())
fmt.Println(carbon.Parse("2025-03-01").IsYesterday())
Output:

true
false
false
false

func (*Carbon) IsZero

func (c *Carbon) IsZero() bool

IsZero reports whether is a zero time(0001-01-01 00:00:00 +0000 UTC). 是否是零值时间(0001-01-01 00:00:00 +0000 UTC)

Example
fmt.Println(carbon.NewCarbon().IsZero())
fmt.Println(carbon.CreateFromDateTimeNano(0001, 1, 1, 00, 00, 00, 00, carbon.UTC).IsZero())

fmt.Println(carbon.Parse("").IsZero())
fmt.Println(carbon.Parse("xxx").IsZero())
fmt.Println(carbon.Now().IsZero())
Output:

true
true
false
false
false

func (*Carbon) Julian

func (c *Carbon) Julian() *julian.Julian

Julian converts Carbon instance to Julian instance. 将 Carbon 实例转化为 Julian 实例

Example
fmt.Println("JD(default precision 6):", carbon.Parse("2024-01-23 13:14:15").Julian().JD())
fmt.Println("MJD(default precision 6):", carbon.Parse("2024-01-23 13:14:15").Julian().MJD())

fmt.Println("JD(specify precision 4):", carbon.Parse("2024-01-23 13:14:15").Julian().JD(4))
fmt.Println("MJD(specify precision 4):", carbon.Parse("2024-01-23 13:14:15").Julian().MJD(4))
Output:

JD(default precision 6): 2.460333051563e+06
MJD(default precision 6): 60332.551563
JD(specify precision 4): 2.4603330516e+06
MJD(specify precision 4): 60332.5516

func (*Carbon) Layout

func (c *Carbon) Layout(layout string, timezone ...string) string

Layout outputs a string by layout. 输出指定布局模板的时间字符串

Example
c := carbon.Parse("2020-08-05T13:14:15.999999999+00:00")

fmt.Printf("date layout: %s\n", c.Layout(carbon.DateLayout))
fmt.Printf("time layout: %s\n", c.Layout(carbon.TimeLayout))
fmt.Printf("datetime layout: %s\n", c.Layout(carbon.DateTimeLayout))

fmt.Printf("timestamp layout: %s\n", c.Layout(carbon.TimestampLayout))
fmt.Printf("TimestampMilli layout: %s\n", c.Layout(carbon.TimestampMilliLayout))
fmt.Printf("timestampMicro layout: %s\n", c.Layout(carbon.TimestampMicroLayout))
fmt.Printf("timestampNano layout: %s\n", c.Layout(carbon.TimestampNanoLayout))
Output:

date layout: 2020-08-05
time layout: 13:14:15
datetime layout: 2020-08-05 13:14:15
timestamp layout: 1596633255
TimestampMilli layout: 1596633255999
timestampMicro layout: 1596633255999999
timestampNano layout: 1596633255999999999

func (*Carbon) Locale

func (c *Carbon) Locale() string

Locale gets locale name like "zh-CN". 获取语言区域

Example
fmt.Println(carbon.Now().SetLocale("en").Locale())
fmt.Println(carbon.Now().SetLocale("zh-CN").Locale())
Output:

en
zh-CN

func (*Carbon) Lt

func (c *Carbon) Lt(t *Carbon) bool

Lt reports whether less than. 是否小于

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Lt(carbon.Parse("2020-08-05 21:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Lt(carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Lt(carbon.Parse("2020-08-05 23:00:00")))
Output:

false
false
true

func (*Carbon) Lte

func (c *Carbon) Lte(t *Carbon) bool

Lte reports whether less than or equal. 是否小于等于

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Lte(carbon.Parse("2020-08-05 21:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Lte(carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Lte(carbon.Parse("2020-08-05 23:00:00")))
Output:

false
true
true

func (*Carbon) Lunar

func (c *Carbon) Lunar() *lunar.Lunar

Lunar converts Carbon instance to Lunar instance. 将 Carbon 实例转化为 Lunar 实例

Example
fmt.Println(carbon.Parse("2023-03-02", carbon.PRC).Lunar().String())
fmt.Println(carbon.Parse("2023-04-01", carbon.PRC).Lunar().String())
Output:

2023-02-11
2023-02-11

func (*Carbon) Microsecond

func (c *Carbon) Microsecond() int

Microsecond gets current microsecond like 999999. 获取当前微秒数

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Microsecond())
Output:

999999

func (*Carbon) Millisecond

func (c *Carbon) Millisecond() int

Millisecond gets current millisecond like 999. 获取当前毫秒数

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Millisecond())
Output:

999

func (*Carbon) Minute

func (c *Carbon) Minute() int

Minute gets current minute like 14. 获取当前分钟数

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Minute())
Output:

14

func (*Carbon) Month

func (c *Carbon) Month() int

Month gets current month like 8. 获取当前月

Example
fmt.Println(carbon.Parse("2020-01-05").Month())
fmt.Println(carbon.Parse("2020-04-05").Month())
fmt.Println(carbon.Parse("2020-08-05").Month())
fmt.Println(carbon.Parse("2020-11-05").Month())
Output:

1
4
8
11

func (*Carbon) MonthOfYear

func (c *Carbon) MonthOfYear() int

MonthOfYear gets month of year like 12. 获取本年的第几月

Example
fmt.Println(carbon.Parse("2020-01-05").MonthOfYear())
fmt.Println(carbon.Parse("2020-02-05").MonthOfYear())
fmt.Println(carbon.Parse("2020-03-05").MonthOfYear())
fmt.Println(carbon.Parse("2020-04-05").MonthOfYear())
Output:

1
2
3
4

func (*Carbon) Nanosecond

func (c *Carbon) Nanosecond() int

Nanosecond gets current nanosecond like 999999999. 获取当前纳秒数

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Nanosecond())
Output:

999999999

func (*Carbon) Ne

func (c *Carbon) Ne(t *Carbon) bool

Ne reports whether not equal. 是否不等于

Example
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Ne(carbon.Parse("2020-08-05 21:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Ne(carbon.Parse("2020-08-05 22:00:00")))
fmt.Println(carbon.Parse("2020-08-05 22:00:00").Ne(carbon.Parse("2020-08-05 23:00:00")))
Output:

true
false
true

func (*Carbon) Persian

func (c *Carbon) Persian() *persian.Persian

Persian converts Carbon instance to Persian instance. 将 Carbon 实例转化为 Persian 实例

Example
fmt.Println(carbon.Parse("1800-01-01 00:00:00").Persian().String())
fmt.Println(carbon.Parse("2020-08-05 13:14:15").Persian().String())
fmt.Println(carbon.Parse("2024-01-01 00:00:00").Persian().String())
Output:

1178-10-11
1399-05-15
1402-10-11

func (*Carbon) Quarter

func (c *Carbon) Quarter() (quarter int)

Quarter gets current quarter like 3. 获取当前季度

Example
fmt.Println(carbon.Parse("2020-01-05").Quarter())
fmt.Println(carbon.Parse("2020-04-05").Quarter())
fmt.Println(carbon.Parse("2020-08-05").Quarter())
fmt.Println(carbon.Parse("2020-11-05").Quarter())
Output:

1
2
3
4

func (*Carbon) Season

func (c *Carbon) Season() string

Season gets season name according to the meteorological division method like "Spring", i18n is supported. 获取当前季节(以气象划分),支持 i18n

Example
fmt.Println(carbon.Parse("2020-01-05").Season())
fmt.Println(carbon.Parse("2020-02-05").Season())
fmt.Println(carbon.Parse("2020-03-05").Season())
fmt.Println(carbon.Parse("2020-04-05").Season())
fmt.Println(carbon.Parse("2020-05-05").Season())
fmt.Println(carbon.Parse("2020-06-05").Season())
fmt.Println(carbon.Parse("2020-07-05").Season())
fmt.Println(carbon.Parse("2020-08-05").Season())
fmt.Println(carbon.Parse("2020-09-05").Season())
fmt.Println(carbon.Parse("2020-10-05").Season())
fmt.Println(carbon.Parse("2020-11-05").Season())
fmt.Println(carbon.Parse("2020-12-05").Season())
Output:

Winter
Winter
Spring
Spring
Spring
Summer
Summer
Summer
Autumn
Autumn
Autumn
Winter

func (*Carbon) Second

func (c *Carbon) Second() int

Second gets current second like 9. 获取当前秒数

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Second())
Output:

15

func (*Carbon) SetDate

func (c *Carbon) SetDate(year, month, day int) *Carbon

SetDate sets year, month and day. 设置年、月、日

Example
fmt.Println(carbon.Parse("2020-08-05").SetDate(2020, 8, 5).ToString())
Output:

2020-08-05 00:00:00 +0000 UTC

func (*Carbon) SetDateMicro

func (c *Carbon) SetDateMicro(year, month, day, microsecond int) *Carbon

SetDateMicro sets year, month, day and microsecond. 设置年、月、日、微秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateMicro(2020, 8, 5, 999999).ToString())
Output:

2020-08-05 00:00:00.999999 +0000 UTC

func (*Carbon) SetDateMilli

func (c *Carbon) SetDateMilli(year, month, day, millisecond int) *Carbon

SetDateMilli sets year, month, day and millisecond. 设置年、月、日、毫秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateMilli(2020, 8, 5, 999).ToString())
Output:

2020-08-05 00:00:00.999 +0000 UTC

func (*Carbon) SetDateNano

func (c *Carbon) SetDateNano(year, month, day, nanosecond int) *Carbon

SetDateNano sets year, month, day and nanosecond. 设置年、月、日、纳秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateNano(2020, 8, 5, 999999999).ToString())
Output:

2020-08-05 00:00:00.999999999 +0000 UTC

func (*Carbon) SetDateTime

func (c *Carbon) SetDateTime(year, month, day, hour, minute, second int) *Carbon

SetDateTime sets year, month, day, hour, minute and second. 设置年、月、日、时、分、秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateTime(2020, 8, 5, 13, 14, 15).ToString())
Output:

2020-08-05 13:14:15 +0000 UTC

func (*Carbon) SetDateTimeMicro

func (c *Carbon) SetDateTimeMicro(year, month, day, hour, minute, second, microsecond int) *Carbon

SetDateTimeMicro sets year, month, day, hour, minute, second and microsecond. 设置年、月、日、时、分、秒、微秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateTimeMicro(2020, 8, 5, 13, 14, 15, 999999).ToString())
Output:

2020-08-05 13:14:15.999999 +0000 UTC

func (*Carbon) SetDateTimeMilli

func (c *Carbon) SetDateTimeMilli(year, month, day, hour, minute, second, millisecond int) *Carbon

SetDateTimeMilli sets year, month, day, hour, minute, second and millisecond. 设置年、月、日、时、分、秒、毫秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateTimeMilli(2020, 8, 5, 13, 14, 15, 999).ToString())
Output:

2020-08-05 13:14:15.999 +0000 UTC

func (*Carbon) SetDateTimeNano

func (c *Carbon) SetDateTimeNano(year, month, day, hour, minute, second, nanosecond int) *Carbon

SetDateTimeNano sets year, month, day, hour, minute, second and nanosecond. 设置年、月、日、时、分、秒、纳秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetDateTimeNano(2020, 8, 5, 13, 14, 15, 999999999).ToString())
Output:

2020-08-05 13:14:15.999999999 +0000 UTC

func (*Carbon) SetDay

func (c *Carbon) SetDay(day int) *Carbon

SetDay sets day. 设置日期

Example
fmt.Println(carbon.Parse("2020-01-01").SetDay(31).ToString())
fmt.Println(carbon.Parse("2020-02-01").SetDay(31).ToString())
fmt.Println(carbon.Parse("2020-02-28").SetDay(31).ToString())
Output:

2020-01-31 00:00:00 +0000 UTC
2020-03-02 00:00:00 +0000 UTC
2020-03-02 00:00:00 +0000 UTC

func (*Carbon) SetFormat added in v2.6.0

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

SetFormat sets format. 设置格式模板

Example
c := carbon.Parse("2020-08-05 13:14:15.999999 +0000 UTC")

fmt.Println("date format:", c.SetFormat(carbon.DateFormat))
fmt.Println("time format:", c.SetFormat(carbon.TimeFormat))
fmt.Println("datetime format:", c.SetFormat(carbon.DateTimeFormat))
fmt.Println("timestamp format:", c.SetFormat(carbon.TimestampFormat))
Output:

date format: 2020-08-05
time format: 13:14:15
datetime format: 2020-08-05 13:14:15
timestamp format: 1596633255

func (*Carbon) SetHour

func (c *Carbon) SetHour(hour int) *Carbon

SetHour sets hour. 设置小时

Example
fmt.Println(carbon.Parse("2020-01-01").SetHour(10).ToString())
fmt.Println(carbon.Parse("2020-02-01").SetHour(24).ToString())
fmt.Println(carbon.Parse("2020-02-28").SetHour(31).ToString())
Output:

2020-01-01 10:00:00 +0000 UTC
2020-02-02 00:00:00 +0000 UTC
2020-02-29 07:00:00 +0000 UTC

func (*Carbon) SetLanguage added in v2.6.0

func (c *Carbon) SetLanguage(lang *Language) *Carbon

SetLanguage sets language. 设置语言对象

Example
lang := carbon.NewLanguage()

lang.SetLocale("en")
fmt.Println(carbon.Parse("2020-08-05").SetLanguage(lang).ToMonthString())

lang.SetLocale("zh-CN")
fmt.Println(carbon.Parse("2020-08-05").SetLanguage(lang).ToMonthString())
Output:

August
八月

func (*Carbon) SetLayout added in v2.6.0

func (c *Carbon) SetLayout(layout string) *Carbon

SetLayout sets layout. 设置布局模板

Example
c := carbon.Parse("2020-08-05 13:14:15.999999 +0000 UTC")

fmt.Println("date layout:", c.SetLayout(carbon.DateLayout))
fmt.Println("time layout:", c.SetLayout(carbon.TimeLayout))
fmt.Println("datetime layout:", c.SetLayout(carbon.DateTimeLayout))
fmt.Println("timestamp layout:", c.SetLayout(carbon.TimestampLayout))
Output:

date layout: 2020-08-05
time layout: 13:14:15
datetime layout: 2020-08-05 13:14:15
timestamp layout: 1596633255

func (*Carbon) SetLocale

func (c *Carbon) SetLocale(locale string) *Carbon

SetLocale sets locale. 设置语言区域

Example
c := carbon.Parse("2020-08-05").SetLocale("zh-CN")

fmt.Println(c.Constellation())
fmt.Println(c.Season())
fmt.Println(c.ToMonthString())
fmt.Println(c.ToShortMonthString())
fmt.Println(c.ToWeekString())
fmt.Println(c.ToShortWeekString())
Output:

狮子座
夏季
八月
8月
星期三
周三

func (*Carbon) SetLocation

func (c *Carbon) SetLocation(loc *Location) *Carbon

SetLocation sets location. 设置位置

Example
defer carbon.SetLocation(time.UTC)

c := carbon.Parse("2020-08-05")

loc, _ := time.LoadLocation(carbon.PRC)
c.SetLocation(loc)
fmt.Println("default location:", carbon.DefaultTimezone)
fmt.Println("zone location:", c.Timezone())
fmt.Println("zone name:", c.ZoneName())
fmt.Println("zone offset:", c.ZoneOffset())
Output:

default location: UTC
zone location: PRC
zone name: CST
zone offset: 28800

func (*Carbon) SetMicrosecond

func (c *Carbon) SetMicrosecond(microsecond int) *Carbon

SetMicrosecond sets microsecond. 设置微秒

Example
fmt.Println(carbon.Parse("2020-01-01").SetMicrosecond(100000).ToString())
fmt.Println(carbon.Parse("2020-01-01").SetMicrosecond(999999).ToString())
Output:

2020-01-01 00:00:00.1 +0000 UTC
2020-01-01 00:00:00.999999 +0000 UTC

func (*Carbon) SetMillisecond

func (c *Carbon) SetMillisecond(millisecond int) *Carbon

SetMillisecond sets millisecond. 设置毫秒

Example
fmt.Println(carbon.Parse("2020-01-01").SetMillisecond(100).ToString())
fmt.Println(carbon.Parse("2020-01-01").SetMillisecond(999).ToString())
Output:

2020-01-01 00:00:00.1 +0000 UTC
2020-01-01 00:00:00.999 +0000 UTC

func (*Carbon) SetMinute

func (c *Carbon) SetMinute(minute int) *Carbon

SetMinute sets minute. 设置分钟

Example
fmt.Println(carbon.Parse("2020-01-01").SetMinute(10).ToString())
fmt.Println(carbon.Parse("2020-02-01").SetMinute(24).ToString())
fmt.Println(carbon.Parse("2020-02-28").SetMinute(60).ToString())
Output:

2020-01-01 00:10:00 +0000 UTC
2020-02-01 00:24:00 +0000 UTC
2020-02-28 01:00:00 +0000 UTC

func (*Carbon) SetMonth

func (c *Carbon) SetMonth(month int) *Carbon

SetMonth sets month. 设置月份

Example
fmt.Println(carbon.Parse("2020-01-01").SetMonth(2).ToString())
fmt.Println(carbon.Parse("2020-01-30").SetMonth(2).ToString())
fmt.Println(carbon.Parse("2020-01-31").SetMonth(2).ToString())
Output:

2020-02-01 00:00:00 +0000 UTC
2020-03-01 00:00:00 +0000 UTC
2020-03-02 00:00:00 +0000 UTC

func (*Carbon) SetMonthNoOverflow

func (c *Carbon) SetMonthNoOverflow(month int) *Carbon

SetMonthNoOverflow sets month without overflowing month. 设置月份(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SetMonthNoOverflow(2).ToString())
fmt.Println(carbon.Parse("2020-01-30").SetMonthNoOverflow(2).ToString())
fmt.Println(carbon.Parse("2020-01-31").SetMonthNoOverflow(2).ToString())
Output:

2020-02-01 00:00:00 +0000 UTC
2020-02-29 00:00:00 +0000 UTC
2020-02-29 00:00:00 +0000 UTC

func (*Carbon) SetNanosecond

func (c *Carbon) SetNanosecond(nanosecond int) *Carbon

SetNanosecond sets nanosecond. 设置纳秒

Example
fmt.Println(carbon.Parse("2020-01-01").SetNanosecond(100000000).ToString())
fmt.Println(carbon.Parse("2020-01-01").SetNanosecond(999999999).ToString())
Output:

2020-01-01 00:00:00.1 +0000 UTC
2020-01-01 00:00:00.999999999 +0000 UTC

func (*Carbon) SetSecond

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

SetSecond sets second. 设置秒数

Example
fmt.Println(carbon.Parse("2020-01-01").SetSecond(10).ToString())
fmt.Println(carbon.Parse("2020-02-01").SetSecond(24).ToString())
fmt.Println(carbon.Parse("2020-02-28").SetSecond(60).ToString())
Output:

2020-01-01 00:00:10 +0000 UTC
2020-02-01 00:00:24 +0000 UTC
2020-02-28 00:01:00 +0000 UTC

func (*Carbon) SetTime

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

SetTime sets hour, minute and second. 设置时、分、秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetTime(13, 14, 15).ToString())
Output:

2020-08-05 13:14:15 +0000 UTC

func (*Carbon) SetTimeMicro

func (c *Carbon) SetTimeMicro(hour, minute, second, microsecond int) *Carbon

SetTimeMicro sets hour, minute, second and microsecond. 设置时、分、秒、微秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetTimeMicro(13, 14, 15, 999999).ToString())
Output:

2020-08-05 13:14:15.999999 +0000 UTC

func (*Carbon) SetTimeMilli

func (c *Carbon) SetTimeMilli(hour, minute, second, millisecond int) *Carbon

SetTimeMilli sets hour, minute, second and millisecond. 设置时、分、秒、毫秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetTimeMilli(13, 14, 15, 999).ToString())
Output:

2020-08-05 13:14:15.999 +0000 UTC

func (*Carbon) SetTimeNano

func (c *Carbon) SetTimeNano(hour, minute, second, nanosecond int) *Carbon

SetTimeNano sets hour, minute, second and nanosecond. 设置、时、分、秒、纳秒

Example
fmt.Println(carbon.Parse("2020-08-05").SetTimeNano(13, 14, 15, 999999999).ToString())
Output:

2020-08-05 13:14:15.999999999 +0000 UTC

func (*Carbon) SetTimezone

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

SetTimezone sets timezone. 设置时区

Example
fmt.Println("UTC zone location:", carbon.Now().SetTimezone(carbon.UTC).Timezone())
fmt.Println("UTC zone name:", carbon.Now().SetTimezone(carbon.UTC).ZoneName())
fmt.Println("UTC zone offset:", carbon.Now().SetTimezone(carbon.UTC).ZoneOffset())

fmt.Println("PRC zone location:", carbon.Now().SetTimezone(carbon.PRC).Timezone())
fmt.Println("PRC zone name:", carbon.Now().SetTimezone(carbon.PRC).ZoneName())
fmt.Println("PRC zone offset:", carbon.Now().SetTimezone(carbon.PRC).ZoneOffset())

fmt.Println("Japan zone location:", carbon.Now().SetTimezone(carbon.Japan).Timezone())
fmt.Println("Japan zone name:", carbon.Now().SetTimezone(carbon.Japan).ZoneName())
fmt.Println("Japan zone offset:", carbon.Now().SetTimezone(carbon.Japan).ZoneOffset())
Output:

UTC zone location: UTC
UTC zone name: UTC
UTC zone offset: 0
PRC zone location: PRC
PRC zone name: CST
PRC zone offset: 28800
Japan zone location: Japan
Japan zone name: JST
Japan zone offset: 32400

func (*Carbon) SetWeekStartsAt

func (c *Carbon) SetWeekStartsAt(weekDay Weekday) *Carbon

SetWeekStartsAt sets start day of the week. 设置一周起始日期

Example
fmt.Println("week starts at:", carbon.Now().SetWeekStartsAt(carbon.Sunday).WeekStartsAt())
fmt.Println("week starts at:", carbon.Now().SetWeekStartsAt(carbon.Monday).WeekStartsAt())
Output:

week starts at: Sunday
week starts at: Monday

func (*Carbon) SetWeekendDays added in v2.6.3

func (c *Carbon) SetWeekendDays(weekDays []Weekday) *Carbon

SetWeekendDays sets weekend days of the week. 设置一周周末日期

Example
wd1 := []carbon.Weekday{
	carbon.Saturday,
}
fmt.Println(carbon.Parse("2025-04-12").SetWeekendDays(wd1).IsWeekend())
fmt.Println(carbon.Parse("2025-04-13").SetWeekendDays(wd1).IsWeekend())

wd2 := []carbon.Weekday{
	carbon.Sunday,
}
fmt.Println(carbon.Parse("2025-04-12").SetWeekendDays(wd2).IsWeekend())
fmt.Println(carbon.Parse("2025-04-13").SetWeekendDays(wd2).IsWeekend())
Output:

true
false
false
true

func (*Carbon) SetYear

func (c *Carbon) SetYear(year int) *Carbon

SetYear sets year. 设置年份

Example
fmt.Println(carbon.Parse("2020-01-01").SetYear(2019).ToString())
fmt.Println(carbon.Parse("2020-01-31").SetYear(2019).ToString())
fmt.Println(carbon.Parse("2020-02-29").SetYear(2019).ToString())
Output:

2019-01-01 00:00:00 +0000 UTC
2019-01-31 00:00:00 +0000 UTC
2019-03-01 00:00:00 +0000 UTC

func (*Carbon) SetYearNoOverflow

func (c *Carbon) SetYearNoOverflow(year int) *Carbon

SetYearNoOverflow sets year without overflowing month. 设置年份(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SetYearNoOverflow(2019).ToString())
fmt.Println(carbon.Parse("2020-01-31").SetYearNoOverflow(2019).ToString())
fmt.Println(carbon.Parse("2020-02-29").SetYearNoOverflow(2019).ToString())
Output:

2019-01-01 00:00:00 +0000 UTC
2019-01-31 00:00:00 +0000 UTC
2019-02-28 00:00:00 +0000 UTC

func (*Carbon) StartOfCentury

func (c *Carbon) StartOfCentury() *Carbon

StartOfCentury returns a Carbon instance for start of the century. 本世纪开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfCentury().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfCentury().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfCentury().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfCentury().ToString())
Output:

0000-01-01 00:00:00 +0000 UTC
2000-01-01 00:00:00 +0000 UTC
2000-01-01 00:00:00 +0000 UTC
2000-01-01 00:00:00 +0000 UTC

func (*Carbon) StartOfDay

func (c *Carbon) StartOfDay() *Carbon

StartOfDay returns a Carbon instance for start of the day. 本日开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfDay().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfDay().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfDay().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfDay().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-08-15 00:00:00 +0000 UTC
2020-12-31 00:00:00 +0000 UTC

func (*Carbon) StartOfDecade

func (c *Carbon) StartOfDecade() *Carbon

StartOfDecade returns a Carbon instance for start of the decade. 本年代开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfDecade().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfDecade().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfDecade().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfDecade().ToString())
Output:

0000-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC

func (*Carbon) StartOfHour

func (c *Carbon) StartOfHour() *Carbon

StartOfHour returns a Carbon instance for start of the hour. 小时开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfHour().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfHour().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfHour().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfHour().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-08-15 12:00:00 +0000 UTC
2020-12-31 23:00:00 +0000 UTC

func (*Carbon) StartOfMinute

func (c *Carbon) StartOfMinute() *Carbon

StartOfMinute returns a Carbon instance for start of the minute. 分钟开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfMinute().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfMinute().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfMinute().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfMinute().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-08-15 12:30:00 +0000 UTC
2020-12-31 23:59:00 +0000 UTC

func (*Carbon) StartOfMonth

func (c *Carbon) StartOfMonth() *Carbon

StartOfMonth returns a Carbon instance for start of the month. 本月开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfMonth().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfMonth().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfMonth().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfMonth().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-08-01 00:00:00 +0000 UTC
2020-12-01 00:00:00 +0000 UTC

func (*Carbon) StartOfQuarter

func (c *Carbon) StartOfQuarter() *Carbon

StartOfQuarter returns a Carbon instance for start of the quarter. 本季度开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfQuarter().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfQuarter().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfQuarter().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfQuarter().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-07-01 00:00:00 +0000 UTC
2020-10-01 00:00:00 +0000 UTC

func (*Carbon) StartOfSeason

func (c *Carbon) StartOfSeason() *Carbon

StartOfSeason returns a Carbon instance for start of the season. 本季节开始时间

Example
fmt.Println(carbon.Parse("2020-01-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-02-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-03-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-04-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-05-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-06-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-07-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-08-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-09-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-10-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-11-15").StartOfSeason().ToString())
fmt.Println(carbon.Parse("2020-12-15").StartOfSeason().ToString())
Output:

2019-12-01 00:00:00 +0000 UTC
2019-12-01 00:00:00 +0000 UTC
2020-03-01 00:00:00 +0000 UTC
2020-03-01 00:00:00 +0000 UTC
2020-03-01 00:00:00 +0000 UTC
2020-06-01 00:00:00 +0000 UTC
2020-06-01 00:00:00 +0000 UTC
2020-06-01 00:00:00 +0000 UTC
2020-09-01 00:00:00 +0000 UTC
2020-09-01 00:00:00 +0000 UTC
2020-09-01 00:00:00 +0000 UTC
2020-12-01 00:00:00 +0000 UTC

func (*Carbon) StartOfSecond

func (c *Carbon) StartOfSecond() *Carbon

StartOfSecond returns a Carbon instance for start of the second. 秒开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfSecond().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfSecond().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfSecond().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfSecond().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-08-15 12:30:30 +0000 UTC
2020-12-31 23:59:59 +0000 UTC

func (*Carbon) StartOfWeek

func (c *Carbon) StartOfWeek() *Carbon

StartOfWeek returns a Carbon instance for start of the week. 本周开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfWeek().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfWeek().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfWeek().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfWeek().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2019-12-30 00:00:00 +0000 UTC
2020-08-10 00:00:00 +0000 UTC
2020-12-28 00:00:00 +0000 UTC

func (*Carbon) StartOfYear

func (c *Carbon) StartOfYear() *Carbon

StartOfYear returns a Carbon instance for start of the year. 本年开始时间

Example
fmt.Println(carbon.NewCarbon().StartOfYear().ToString())
fmt.Println(carbon.Parse("2020-01-01 00:00:00").StartOfYear().ToString())
fmt.Println(carbon.Parse("2020-08-15 12:30:30").StartOfYear().ToString())
fmt.Println(carbon.Parse("2020-12-31 23:59:59").StartOfYear().ToString())
Output:

0001-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC
2020-01-01 00:00:00 +0000 UTC

func (*Carbon) StdTime

func (c *Carbon) StdTime() StdTime

StdTime gets standard time.Time. 获取标准 time.Time

Example
fmt.Println(carbon.Parse("2020-08-05").StdTime().String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).StdTime().String())
Output:

2020-08-05 00:00:00 +0000 UTC
2020-08-05 00:00:00 +0800 CST

func (*Carbon) String

func (c *Carbon) String() string

String implements the interface Stringer for Carbon struct. 实现 Stringer 接口

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").String())
fmt.Println(carbon.Parse("2020-08-05 13:14:15", carbon.PRC).String())
Output:

2020-08-05 13:14:15
2020-08-05 13:14:15

func (*Carbon) SubCenturies

func (c *Carbon) SubCenturies(centuries int) *Carbon

SubCenturies subtracts some centuries. N 个世纪前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubCenturies(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubCenturies(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubCenturies(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
1920-01-01 13:14:15 +0000 UTC
1820-01-01 13:14:15 +0000 UTC

func (*Carbon) SubCenturiesNoOverflow

func (c *Carbon) SubCenturiesNoOverflow(centuries int) *Carbon

SubCenturiesNoOverflow subtracts some centuries without overflowing month. N 个世纪前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-02-28 13:14:15").SubCenturiesNoOverflow(0).ToString())
fmt.Println(carbon.Parse("2020-02-28 13:14:15").SubCenturiesNoOverflow(1).ToString())
fmt.Println(carbon.Parse("2020-02-28 13:14:15").SubCenturiesNoOverflow(2).ToString())
Output:

2020-02-28 13:14:15 +0000 UTC
1920-02-28 13:14:15 +0000 UTC
1820-02-28 13:14:15 +0000 UTC

func (*Carbon) SubCentury

func (c *Carbon) SubCentury() *Carbon

SubCentury subtracts one century. 1 个世纪前

Example
fmt.Println(carbon.Parse("2020-02-28 13:14:15").SubCentury().ToString())
Output:

1920-02-28 13:14:15 +0000 UTC

func (*Carbon) SubCenturyNoOverflow

func (c *Carbon) SubCenturyNoOverflow() *Carbon

SubCenturyNoOverflow subtracts one century without overflowing month. 1 个世纪前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-02-28 13:14:15").SubCenturyNoOverflow().ToString())
Output:

1920-02-28 13:14:15 +0000 UTC

func (*Carbon) SubDay

func (c *Carbon) SubDay() *Carbon

SubDay subtracts one day. 1 天前

Example
fmt.Println(carbon.Parse("2020-01-01").SubDay().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubDay().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubDay().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").SubDay().ToDateString())
Output:

2019-12-31
2020-02-27
2020-02-28
2020-11-29

func (*Carbon) SubDays

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

SubDays subtracts some days. N 天前

Example
fmt.Println(carbon.Parse("2020-01-01").SubDays(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubDays(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubDays(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubDays(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").SubDays(2).ToDateString())
Output:

2020-01-01
2019-12-31
2019-12-30
2020-02-26
2020-08-29

func (*Carbon) SubDecade

func (c *Carbon) SubDecade() *Carbon

SubDecade subtracts one decade. 1 个年代后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecade().ToString())
Output:

2010-01-01 13:14:15 +0000 UTC

func (*Carbon) SubDecadeNoOverflow

func (c *Carbon) SubDecadeNoOverflow() *Carbon

SubDecadeNoOverflow subtracts one decade without overflowing month. 1 个年代后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecadeNoOverflow().ToString())
Output:

2010-01-01 13:14:15 +0000 UTC

func (*Carbon) SubDecades

func (c *Carbon) SubDecades(decades int) *Carbon

SubDecades subtracts some decades. N 个年代后

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecades(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecades(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecades(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2010-01-01 13:14:15 +0000 UTC
2000-01-01 13:14:15 +0000 UTC

func (*Carbon) SubDecadesNoOverflow

func (c *Carbon) SubDecadesNoOverflow(decades int) *Carbon

SubDecadesNoOverflow subtracts some decades without overflowing month. N 个年代后(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecadesNoOverflow(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecadesNoOverflow(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDecadesNoOverflow(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2010-01-01 13:14:15 +0000 UTC
2000-01-01 13:14:15 +0000 UTC

func (*Carbon) SubDuration

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

SubDuration subtracts duration. 按照时长减少时间,支持整数/浮点数和符号ns(纳秒)、us(微妙)、ms(毫秒)、s(秒)、m(分钟)、h(小时)的组合

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDuration("10h").ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDuration("10.5h").ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDuration("10m").ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubDuration("10.5m").ToString())
Output:

2020-01-01 03:14:15 +0000 UTC
2020-01-01 02:44:15 +0000 UTC
2020-01-01 13:04:15 +0000 UTC
2020-01-01 13:03:45 +0000 UTC

func (*Carbon) SubHour

func (c *Carbon) SubHour() *Carbon

SubHour subtracts one hour. 1 小时前

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").SubHour().ToString())
Output:

2020-08-05 12:14:15 +0000 UTC

func (*Carbon) SubHours

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

SubHours subtracts some hours. N 小时前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubHours(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubHours(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubHours(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 12:14:15 +0000 UTC
2020-01-01 11:14:15 +0000 UTC

func (*Carbon) SubMicrosecond

func (c *Carbon) SubMicrosecond() *Carbon

SubMicrosecond subtracts one microsecond. 1 微秒前

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").SubMicrosecond().ToString())
Output:

2020-08-05 13:14:14.999999 +0000 UTC

func (*Carbon) SubMicroseconds

func (c *Carbon) SubMicroseconds(microseconds int) *Carbon

SubMicroseconds subtracts some microseconds. N 微秒前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMicroseconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMicroseconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMicroseconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:14.999999 +0000 UTC
2020-01-01 13:14:14.999998 +0000 UTC

func (*Carbon) SubMillisecond

func (c *Carbon) SubMillisecond() *Carbon

SubMillisecond subtracts one millisecond. 1 毫秒前

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").SubMillisecond().ToString())
Output:

2020-08-05 13:14:14.999 +0000 UTC

func (*Carbon) SubMilliseconds

func (c *Carbon) SubMilliseconds(milliseconds int) *Carbon

SubMilliseconds subtracts some milliseconds. N 毫秒前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMilliseconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMilliseconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMilliseconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:14.999 +0000 UTC
2020-01-01 13:14:14.998 +0000 UTC

func (*Carbon) SubMinute

func (c *Carbon) SubMinute() *Carbon

SubMinute subtracts one minute. 1 分钟前

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").SubMinute().ToString())
Output:

2020-08-05 13:13:15 +0000 UTC

func (*Carbon) SubMinutes

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

SubMinutes subtracts some minutes. N 分钟前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMinutes(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMinutes(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubMinutes(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:13:15 +0000 UTC
2020-01-01 13:12:15 +0000 UTC

func (*Carbon) SubMonth

func (c *Carbon) SubMonth() *Carbon

SubMonth subtracts one month. 1 个月前

Example
fmt.Println(carbon.Parse("2020-01-01").SubMonth().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubMonth().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubMonth().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").SubMonth().ToDateString())
Output:

2019-12-01
2020-01-28
2020-01-29
2020-10-30

func (*Carbon) SubMonthNoOverflow

func (c *Carbon) SubMonthNoOverflow() *Carbon

SubMonthNoOverflow subtracts one month without overflowing month. 1 个月前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SubMonthNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubMonthNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubMonthNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").SubMonthNoOverflow().ToDateString())
Output:

2019-12-01
2020-01-28
2020-01-29
2020-10-30

func (*Carbon) SubMonths

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

SubMonths subtracts some months. N 个月前

Example
fmt.Println(carbon.Parse("2020-01-01").SubMonths(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubMonths(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubMonths(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubMonths(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").SubMonths(2).ToDateString())
Output:

2020-01-01
2019-12-01
2019-11-01
2019-11-29
2020-07-01

func (*Carbon) SubMonthsNoOverflow

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

SubMonthsNoOverflow subtracts some months without overflowing month. N 个月前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SubMonthsNoOverflow(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubMonthsNoOverflow(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubMonthsNoOverflow(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubMonthsNoOverflow(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").SubMonthsNoOverflow(2).ToDateString())
Output:

2020-01-01
2019-12-01
2019-11-01
2019-11-29
2020-06-30

func (*Carbon) SubNanosecond

func (c *Carbon) SubNanosecond() *Carbon

SubNanosecond subtracts one nanosecond. 1 纳秒前

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").SubNanosecond().ToString())
Output:

2020-08-05 13:14:14.999999999 +0000 UTC

func (*Carbon) SubNanoseconds

func (c *Carbon) SubNanoseconds(nanoseconds int) *Carbon

SubNanoseconds subtracts some nanoseconds. N 纳秒前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubNanoseconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubNanoseconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubNanoseconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:14.999999999 +0000 UTC
2020-01-01 13:14:14.999999998 +0000 UTC

func (*Carbon) SubQuarter

func (c *Carbon) SubQuarter() *Carbon

SubQuarter subtracts one quarter. 1 个季度前

Example
fmt.Println(carbon.Parse("2020-01-01").SubQuarter().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubQuarter().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubQuarter().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").SubQuarter().ToDateString())
Output:

2019-10-01
2019-11-28
2019-11-29
2020-08-30

func (*Carbon) SubQuarterNoOverflow

func (c *Carbon) SubQuarterNoOverflow() *Carbon

SubQuarterNoOverflow subtracts one quarter without overflowing month. 1 个季度前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SubQuarterNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubQuarterNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubQuarterNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").SubQuarterNoOverflow().ToDateString())
Output:

2019-10-01
2019-11-28
2019-11-29
2020-08-30

func (*Carbon) SubQuarters

func (c *Carbon) SubQuarters(quarters int) *Carbon

SubQuarters subtracts some quarters. N 个季度前

Example
fmt.Println(carbon.Parse("2020-01-01").SubQuarters(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubQuarters(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubQuarters(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubQuarters(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").SubQuarters(2).ToDateString())
Output:

2020-01-01
2019-10-01
2019-07-01
2019-05-29
2020-03-02

func (*Carbon) SubQuartersNoOverflow

func (c *Carbon) SubQuartersNoOverflow(quarters int) *Carbon

SubQuartersNoOverflow subtracts some quarters without overflowing month. N 个季度前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SubQuartersNoOverflow(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubQuartersNoOverflow(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubQuartersNoOverflow(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubQuartersNoOverflow(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").SubQuartersNoOverflow(2).ToDateString())
Output:

2020-01-01
2019-10-01
2019-07-01
2019-05-29
2020-02-29

func (*Carbon) SubSecond

func (c *Carbon) SubSecond() *Carbon

SubSecond subtracts one second. 1 秒钟前

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").SubSecond().ToString())
Output:

2020-08-05 13:14:14 +0000 UTC

func (*Carbon) SubSeconds

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

SubSeconds subtracts some seconds. N 秒钟前

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubSeconds(0).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubSeconds(1).ToString())
fmt.Println(carbon.Parse("2020-01-01 13:14:15").SubSeconds(2).ToString())
Output:

2020-01-01 13:14:15 +0000 UTC
2020-01-01 13:14:14 +0000 UTC
2020-01-01 13:14:13 +0000 UTC

func (*Carbon) SubWeek

func (c *Carbon) SubWeek() *Carbon

SubWeek subtracts one week. 1 周前

Example
fmt.Println(carbon.Parse("2020-01-01").SubWeek().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubWeek().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubWeek().ToDateString())
fmt.Println(carbon.Parse("2020-11-30").SubWeek().ToDateString())
Output:

2019-12-25
2020-02-21
2020-02-22
2020-11-23

func (*Carbon) SubWeeks

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

SubWeeks subtracts some weeks. N 周前

Example
fmt.Println(carbon.Parse("2020-01-01").SubWeeks(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubWeeks(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubWeeks(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubWeeks(3).ToDateString())
fmt.Println(carbon.Parse("2020-08-31").SubWeeks(2).ToDateString())
Output:

2020-01-01
2019-12-25
2019-12-18
2020-02-08
2020-08-17

func (*Carbon) SubYear

func (c *Carbon) SubYear() *Carbon

SubYear subtracts one year. 1 年前

Example
fmt.Println(carbon.Parse("2020-01-01").SubYear().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubYear().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubYear().ToDateString())
Output:

2019-01-01
2019-02-28
2019-03-01

func (*Carbon) SubYearNoOverflow

func (c *Carbon) SubYearNoOverflow() *Carbon

SubYearNoOverflow subtracts one year without overflowing month. 1 年前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SubYearNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-28").SubYearNoOverflow().ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubYearNoOverflow().ToDateString())
Output:

2019-01-01
2019-02-28
2019-02-28

func (*Carbon) SubYears

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

SubYears subtracts some years. N 年前

Example
fmt.Println(carbon.Parse("2020-01-01").SubYears(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubYears(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubYears(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubYears(3).ToDateString())
Output:

2020-01-01
2019-01-01
2018-01-01
2017-03-01

func (*Carbon) SubYearsNoOverflow

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

SubYearsNoOverflow subtracts some years without overflowing month. N 年前(月份不溢出)

Example
fmt.Println(carbon.Parse("2020-01-01").SubYearsNoOverflow(0).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubYearsNoOverflow(1).ToDateString())
fmt.Println(carbon.Parse("2020-01-01").SubYearsNoOverflow(2).ToDateString())
fmt.Println(carbon.Parse("2020-02-29").SubYearsNoOverflow(3).ToDateString())
Output:

2020-01-01
2019-01-01
2018-01-01
2017-02-28

func (*Carbon) Time

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

Time gets current hour, minute, and second like 13, 14, 15. 获取当前时、分、秒

Example
hour, minute, second := carbon.Parse("2020-08-05 13:14:15.999999999").Time()

fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
Output:

13
14
15

func (*Carbon) TimeMicro

func (c *Carbon) TimeMicro() (hour, minute, second, microsecond int)

TimeMicro gets current hour, minute, second and microsecond like 13, 14, 15, 999999. 获取当前时、分、秒、微秒

Example
hour, minute, second, microsecond := carbon.Parse("2020-08-05 13:14:15.999999999").TimeMicro()

fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
fmt.Println(microsecond)
Output:

13
14
15
999999

func (*Carbon) TimeMilli

func (c *Carbon) TimeMilli() (hour, minute, second, millisecond int)

TimeMilli gets current hour, minute, second and millisecond like 13, 14, 15, 999. 获取当前时、分、秒、毫秒

Example
hour, minute, second, millisecond := carbon.Parse("2020-08-05 13:14:15.999999999").TimeMilli()

fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
fmt.Println(millisecond)
Output:

13
14
15
999

func (*Carbon) TimeNano

func (c *Carbon) TimeNano() (hour, minute, second, nanosecond int)

TimeNano gets current hour, minute, second and nanosecond like 13, 14, 15, 999999999. 获取当前时、分、秒、纳秒

Example
hour, minute, second, nanosecond := carbon.Parse("2020-08-05 13:14:15.999999999").TimeNano()

fmt.Println(hour)
fmt.Println(minute)
fmt.Println(second)
fmt.Println(nanosecond)
Output:

13
14
15
999999999

func (*Carbon) Timestamp

func (c *Carbon) Timestamp() int64

Timestamp gets timestamp with second precision like 1596604455. 输出秒精度时间戳

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15", carbon.PRC).Timestamp())
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").Timestamp())
Output:

1577855655
1596633255

func (*Carbon) TimestampMicro

func (c *Carbon) TimestampMicro() int64

TimestampMicro gets timestamp with microsecond precision like 1596604455000000. 获取微秒精度时间戳

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15", carbon.PRC).TimestampMicro())
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").TimestampMicro())
Output:

1577855655000000
1596633255999999

func (*Carbon) TimestampMilli

func (c *Carbon) TimestampMilli() int64

TimestampMilli gets timestamp with millisecond precision like 1596604455000. 获取毫秒精度时间戳

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15", carbon.PRC).TimestampMilli())
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").TimestampMilli())
Output:

1577855655000
1596633255999

func (*Carbon) TimestampNano

func (c *Carbon) TimestampNano() int64

TimestampNano gets timestamp with nanosecond precision like 1596604455000000000. 获取纳秒精度时间戳

Example
fmt.Println(carbon.Parse("2020-01-01 13:14:15", carbon.PRC).TimestampNano())
fmt.Println(carbon.Parse("2020-08-05 13:14:15.999999999").TimestampNano())
Output:

1577855655000000000
1596633255999999999

func (*Carbon) Timezone

func (c *Carbon) Timezone() string

Timezone gets timezone location like "Asia/Shanghai". 获取时区位置

Example
fmt.Println(carbon.Now().Timezone())
fmt.Println(carbon.Now(carbon.Tokyo).Timezone())
fmt.Println(carbon.Now(carbon.PRC).Timezone())
Output:

UTC
Asia/Tokyo
PRC

func (*Carbon) ToAnsicString

func (c *Carbon) ToAnsicString(timezone ...string) string

ToAnsicString outputs a string in "Mon Jan _2 15:04:05 2006" layout. 输出 "Mon Jan _2 15:04:05 2006" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToAnsicString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToAnsicString())
Output:

Wed Aug  5 13:14:15 2020
Wed Aug  5 00:00:00 2020

func (*Carbon) ToAtomString

func (c *Carbon) ToAtomString(timezone ...string) string

ToAtomString outputs a string in "2006-01-02T15:04:05Z07:00" layout. 输出 "2006-01-02T15:04:05Z07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToAtomString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToAtomString())
Output:

2020-08-05T13:14:15Z
2020-08-05T00:00:00+08:00

func (*Carbon) ToCookieString

func (c *Carbon) ToCookieString(timezone ...string) string

ToCookieString outputs a string in "Monday, 02-Jan-2006 15:04:05 MST" layout. 输出 "Monday, 02-Jan-2006 15:04:05 MST" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToCookieString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToCookieString())
Output:

Wednesday, 05-Aug-2020 13:14:15 UTC
Wednesday, 05-Aug-2020 00:00:00 CST

func (*Carbon) ToDateMicroString

func (c *Carbon) ToDateMicroString(timezone ...string) string

ToDateMicroString outputs a string in "2006-01-02.999999" layout. 输出 "2006-01-02.999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateMicroString())
Output:

2020-08-05.999999
2020-08-05

func (*Carbon) ToDateMilliString

func (c *Carbon) ToDateMilliString(timezone ...string) string

ToDateMilliString outputs a string in "2006-01-02.999" layout. 输出 "2006-01-02.999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateMilliString())
Output:

2020-08-05.999
2020-08-05

func (*Carbon) ToDateNanoString

func (c *Carbon) ToDateNanoString(timezone ...string) string

ToDateNanoString outputs a string in "2006-01-02.999999999" layout. 输出 "2006-01-02.999999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateNanoString())
Output:

2020-08-05.999999999
2020-08-05

func (*Carbon) ToDateString

func (c *Carbon) ToDateString(timezone ...string) string

ToDateString outputs a string in "2006-01-02" layout. 输出 "2006-01-02" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateString())
Output:

2020-08-05
2020-08-05

func (*Carbon) ToDateTimeMicroString

func (c *Carbon) ToDateTimeMicroString(timezone ...string) string

ToDateTimeMicroString outputs a string in "2006-01-02 15:04:05.999999" layout. 输出 "2006-01-02 15:04:05.999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateTimeMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateTimeMicroString())
Output:

2020-08-05 13:14:15.999999
2020-08-05 00:00:00

func (*Carbon) ToDateTimeMilliString

func (c *Carbon) ToDateTimeMilliString(timezone ...string) string

ToDateTimeMilliString outputs a string in "2006-01-02 15:04:05.999" layout. 输出 "2006-01-02 15:04:05.999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateTimeMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateTimeMilliString())
Output:

2020-08-05 13:14:15.999
2020-08-05 00:00:00

func (*Carbon) ToDateTimeNanoString

func (c *Carbon) ToDateTimeNanoString(timezone ...string) string

ToDateTimeNanoString outputs a string in "2006-01-02 15:04:05.999999999" layout. 输出 "2006-01-02 15:04:05.999999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateTimeNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateTimeNanoString())
Output:

2020-08-05 13:14:15.999999999
2020-08-05 00:00:00

func (*Carbon) ToDateTimeString

func (c *Carbon) ToDateTimeString(timezone ...string) string

ToDateTimeString outputs a string in "2006-01-02 15:04:05" layout. 输出 "2006-01-02 15:04:05" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToDateTimeString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDateTimeString())
Output:

2020-08-05 13:14:15
2020-08-05 00:00:00

func (*Carbon) ToDayDateTimeString

func (c *Carbon) ToDayDateTimeString(timezone ...string) string

ToDayDateTimeString outputs a string in "Mon, Jan 2, 2006 3:04 PM" layout. 输出 "Mon, Jan 2, 2006 3:04 PM" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").ToDayDateTimeString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToDayDateTimeString())
Output:

Wed, Aug 5, 2020 1:14 PM
Wed, Aug 5, 2020 12:00 AM

func (*Carbon) ToFormattedDateString

func (c *Carbon) ToFormattedDateString(timezone ...string) string

ToFormattedDateString outputs a string in "Jan 2, 2006" layout. 输出 "Jan 2, 2006" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToFormattedDateString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToFormattedDateString())
Output:

Aug 5, 2020
Aug 5, 2020

func (*Carbon) ToFormattedDayDateString

func (c *Carbon) ToFormattedDayDateString(timezone ...string) string

ToFormattedDayDateString outputs a string in "Mon, Jan 2, 2006" layout. 输出 "Jan 2, 2006" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToFormattedDayDateString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToFormattedDayDateString())
Output:

Wed, Aug 5, 2020
Wed, Aug 5, 2020

func (*Carbon) ToIso8601MicroString

func (c *Carbon) ToIso8601MicroString(timezone ...string) string

ToIso8601MicroString outputs a string in "2006-01-02T15:04:05.999999-07:00" layout. 输出 "2006-01-02T15:04:05.999999-07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601MicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601MicroString())
Output:

2020-08-05T13:14:15.999999+00:00
2020-08-05T00:00:00+08:00

func (*Carbon) ToIso8601MilliString

func (c *Carbon) ToIso8601MilliString(timezone ...string) string

ToIso8601MilliString outputs a string in "2006-01-02T15:04:05.999-07:00" layout. 输出 "2006-01-02T15:04:05.999-07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601MilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601MilliString())
Output:

2020-08-05T13:14:15.999+00:00
2020-08-05T00:00:00+08:00

func (*Carbon) ToIso8601NanoString

func (c *Carbon) ToIso8601NanoString(timezone ...string) string

ToIso8601NanoString outputs a string in "2006-01-02T15:04:05.999999999-07:00" layout. 输出 "2006-01-02T15:04:05.999999999-07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601NanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601NanoString())
Output:

2020-08-05T13:14:15.999999999+00:00
2020-08-05T00:00:00+08:00

func (*Carbon) ToIso8601String

func (c *Carbon) ToIso8601String(timezone ...string) string

ToIso8601String outputs a string in "2006-01-02T15:04:05-07:00" layout. 输出 "2006-01-02T15:04:05-07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601String())
Output:

2020-08-05T13:14:15+00:00
2020-08-05T00:00:00+08:00

func (*Carbon) ToIso8601ZuluMicroString

func (c *Carbon) ToIso8601ZuluMicroString(timezone ...string) string

ToIso8601ZuluMicroString outputs a string in "2006-01-02T15:04:05.999999Z" layout. 输出 "2006-01-02T15:04:05.999999Z" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601ZuluMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601ZuluMicroString())
Output:

2020-08-05T13:14:15.999999Z
2020-08-05T00:00:00Z

func (*Carbon) ToIso8601ZuluMilliString

func (c *Carbon) ToIso8601ZuluMilliString(timezone ...string) string

ToIso8601ZuluMilliString outputs a string in "2006-01-02T15:04:05.999Z" layout. 输出 "2006-01-02T15:04:05.999Z" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601ZuluMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601ZuluMilliString())
Output:

2020-08-05T13:14:15.999Z
2020-08-05T00:00:00Z

func (*Carbon) ToIso8601ZuluNanoString

func (c *Carbon) ToIso8601ZuluNanoString(timezone ...string) string

ToIso8601ZuluNanoString outputs a string in "2006-01-02T15:04:05.999999999Z" layout. 输出 "2006-01-02T15:04:05.999999999Z" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601ZuluNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601ZuluNanoString())
Output:

2020-08-05T13:14:15.999999999Z
2020-08-05T00:00:00Z

func (*Carbon) ToIso8601ZuluString

func (c *Carbon) ToIso8601ZuluString(timezone ...string) string

ToIso8601ZuluString outputs a string in "2006-01-02T15:04:05Z" layout. 输出 "2006-01-02T15:04:05Z" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToIso8601ZuluString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToIso8601ZuluString())
Output:

2020-08-05T13:14:15Z
2020-08-05T00:00:00Z

func (*Carbon) ToKitchenString

func (c *Carbon) ToKitchenString(timezone ...string) string

ToKitchenString outputs a string in "3:04PM" layout. 输出 "3:04PM" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToKitchenString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToKitchenString())
Output:

1:14PM
12:00AM

func (*Carbon) ToMonthString

func (c *Carbon) ToMonthString(timezone ...string) string

ToMonthString outputs a string in month layout like "January", i18n is supported. 输出完整月份字符串,支持 i18n

Example
fmt.Println(carbon.Parse("2020-01-05").ToMonthString())
fmt.Println(carbon.Parse("2020-02-05").ToMonthString())
fmt.Println(carbon.Parse("2020-03-05").ToMonthString())
fmt.Println(carbon.Parse("2020-04-05").ToMonthString())
fmt.Println(carbon.Parse("2020-05-05").ToMonthString())
fmt.Println(carbon.Parse("2020-06-05").ToMonthString())
fmt.Println(carbon.Parse("2020-07-05").ToMonthString())
fmt.Println(carbon.Parse("2020-08-05").ToMonthString())
fmt.Println(carbon.Parse("2020-09-05").ToMonthString())
fmt.Println(carbon.Parse("2020-10-05").ToMonthString())
fmt.Println(carbon.Parse("2020-11-05").ToMonthString())
fmt.Println(carbon.Parse("2020-12-05").ToMonthString())
Output:

January
February
March
April
May
June
July
August
September
October
November
December

func (*Carbon) ToRfc1036String

func (c *Carbon) ToRfc1036String(timezone ...string) string

ToRfc1036String outputs a string in "Mon, 02 Jan 06 15:04:05 -0700" layout. 输出 "Mon, 02 Jan 06 15:04:05 -0700" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc1036String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc1036String())
Output:

Wed, 05 Aug 20 13:14:15 +0000
Wed, 05 Aug 20 00:00:00 +0800

func (*Carbon) ToRfc1123String

func (c *Carbon) ToRfc1123String(timezone ...string) string

ToRfc1123String outputs a string in "Mon, 02 Jan 2006 15:04:05 MST" layout. 输出 "Mon, 02 Jan 2006 15:04:05 MST" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc1123String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc1123String())
Output:

Wed, 05 Aug 2020 13:14:15 UTC
Wed, 05 Aug 2020 00:00:00 CST

func (*Carbon) ToRfc1123zString

func (c *Carbon) ToRfc1123zString(timezone ...string) string

ToRfc1123zString outputs a string in "Mon, 02 Jan 2006 15:04:05 -0700" layout. 输出 "Mon, 02 Jan 2006 15:04:05 -0700" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc1123zString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc1123zString())
Output:

Wed, 05 Aug 2020 13:14:15 +0000
Wed, 05 Aug 2020 00:00:00 +0800

func (*Carbon) ToRfc2822String

func (c *Carbon) ToRfc2822String(timezone ...string) string

ToRfc2822String outputs a string in "Mon, 02 Jan 2006 15:04:05 -0700" layout. 输出 "Mon, 02 Jan 2006 15:04:05 -0700" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc2822String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc2822String())
Output:

Wed, 05 Aug 2020 13:14:15 +0000
Wed, 05 Aug 2020 00:00:00 +0800

func (*Carbon) ToRfc3339MicroString

func (c *Carbon) ToRfc3339MicroString(timezone ...string) string

ToRfc3339MicroString outputs a string in "2006-01-02T15:04:05.999999Z07:00" layout. 输出 "2006-01-02T15:04:05.999999Z07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc3339MicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc3339MicroString())
Output:

2020-08-05T13:14:15.999999Z
2020-08-05T00:00:00+08:00

func (*Carbon) ToRfc3339MilliString

func (c *Carbon) ToRfc3339MilliString(timezone ...string) string

ToRfc3339MilliString outputs a string in "2006-01-02T15:04:05.999Z07:00" layout. 输出 "2006-01-02T15:04:05.999Z07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc3339MilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc3339MilliString())
Output:

2020-08-05T13:14:15.999Z
2020-08-05T00:00:00+08:00

func (*Carbon) ToRfc3339NanoString

func (c *Carbon) ToRfc3339NanoString(timezone ...string) string

ToRfc3339NanoString outputs a string in "2006-01-02T15:04:05.999999999Z07:00" layout. 输出 "2006-01-02T15:04:05.999999999Z07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc3339NanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc3339NanoString())
Output:

2020-08-05T13:14:15.999999999Z
2020-08-05T00:00:00+08:00

func (*Carbon) ToRfc3339String

func (c *Carbon) ToRfc3339String(timezone ...string) string

ToRfc3339String outputs a string in "2006-01-02T15:04:05Z07:00" layout. 输出 "2006-01-02T15:04:05Z07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc3339String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc3339String())
Output:

2020-08-05T13:14:15Z
2020-08-05T00:00:00+08:00

func (*Carbon) ToRfc7231String

func (c *Carbon) ToRfc7231String(timezone ...string) string

ToRfc7231String outputs a string in "Mon, 02 Jan 2006 15:04:05 GMT" layout. 输出 "Mon, 02 Jan 2006 15:04:05 GMT" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc7231String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc7231String())
Output:

Wed, 05 Aug 2020 13:14:15 UTC
Wed, 05 Aug 2020 00:00:00 CST

func (*Carbon) ToRfc822String

func (c *Carbon) ToRfc822String(timezone ...string) string

ToRfc822String outputs a string in "02 Jan 06 15:04 MST" layout. 输出 "02 Jan 06 15:04 MST" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc822String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc822String())
Output:

05 Aug 20 13:14 UTC
05 Aug 20 00:00 CST

func (*Carbon) ToRfc822zString

func (c *Carbon) ToRfc822zString(timezone ...string) string

ToRfc822zString outputs a string in "02 Jan 06 15:04 -0700" layout. 输出 "02 Jan 06 15:04 -0700" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc822zString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc822zString())
Output:

05 Aug 20 13:14 +0000
05 Aug 20 00:00 +0800

func (*Carbon) ToRfc850String

func (c *Carbon) ToRfc850String(timezone ...string) string

ToRfc850String outputs a string in "Monday, 02-Jan-06 15:04:05 MST" layout. 输出 "Monday, 02-Jan-06 15:04:05 MST" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRfc850String())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRfc850String())
Output:

Wednesday, 05-Aug-20 13:14:15 UTC
Wednesday, 05-Aug-20 00:00:00 CST

func (*Carbon) ToRssString

func (c *Carbon) ToRssString(timezone ...string) string

ToRssString outputs a string in "Mon, 02 Jan 2006 15:04:05 -0700" format. 输出 "Mon, 02 Jan 2006 15:04:05 -0700" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRssString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRssString())
Output:

Wed, 05 Aug 2020 13:14:15 +0000
Wed, 05 Aug 2020 00:00:00 +0800

func (*Carbon) ToRubyDateString

func (c *Carbon) ToRubyDateString(timezone ...string) string

ToRubyDateString outputs a string in "Mon Jan 02 15:04:05 -0700 2006" layout. 输出 "Mon Jan 02 15:04:05 -0700 2006" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToRubyDateString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToRubyDateString())
Output:

Wed Aug 05 13:14:15 +0000 2020
Wed Aug 05 00:00:00 +0800 2020

func (*Carbon) ToShortDateMicroString

func (c *Carbon) ToShortDateMicroString(timezone ...string) string

ToShortDateMicroString outputs a string in "20060102.999999" layout. 输出 "20060102.999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateMicroString())
Output:

20200805.999999
20200805

func (*Carbon) ToShortDateMilliString

func (c *Carbon) ToShortDateMilliString(timezone ...string) string

ToShortDateMilliString outputs a string in "20060102.999" layout. 输出 "20060102.999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateMilliString())
Output:

20200805.999
20200805

func (*Carbon) ToShortDateNanoString

func (c *Carbon) ToShortDateNanoString(timezone ...string) string

ToShortDateNanoString outputs a string in "20060102.999999999" layout. 输出 "20060102.999999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateNanoString())
Output:

20200805.999999999
20200805

func (*Carbon) ToShortDateString

func (c *Carbon) ToShortDateString(timezone ...string) string

ToShortDateString outputs a string in "20060102" layout. 输出 "20060102" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateString())
Output:

20200805
20200805

func (*Carbon) ToShortDateTimeMicroString

func (c *Carbon) ToShortDateTimeMicroString(timezone ...string) string

ToShortDateTimeMicroString outputs a string in "20060102150405.999999" layout. 输出 "20060102150405.999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateTimeMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateTimeMicroString())
Output:

20200805131415.999999
20200805000000

func (*Carbon) ToShortDateTimeMilliString

func (c *Carbon) ToShortDateTimeMilliString(timezone ...string) string

ToShortDateTimeMilliString outputs a string in "20060102150405.999" layout. 输出 "20060102150405.999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateTimeMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateTimeMilliString())
Output:

20200805131415.999
20200805000000

func (*Carbon) ToShortDateTimeNanoString

func (c *Carbon) ToShortDateTimeNanoString(timezone ...string) string

ToShortDateTimeNanoString outputs a string in "20060102150405.999999999" layout. 输出 "20060102150405.999999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateTimeNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateTimeNanoString())
Output:

20200805131415.999999999
20200805000000

func (*Carbon) ToShortDateTimeString

func (c *Carbon) ToShortDateTimeString(timezone ...string) string

ToShortDateTimeString outputs a string in "20060102150405" layout. 输出 "20060102150405" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortDateTimeString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortDateTimeString())
Output:

20200805131415
20200805000000

func (*Carbon) ToShortMonthString

func (c *Carbon) ToShortMonthString(timezone ...string) string

ToShortMonthString outputs a string in short month layout like "Jan", i18n is supported. 输出缩写月份字符串,支持 i18n

Example
fmt.Println(carbon.Parse("2020-01-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-02-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-03-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-04-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-05-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-06-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-07-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-08-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-09-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-10-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-11-05").ToShortMonthString())
fmt.Println(carbon.Parse("2020-12-05").ToShortMonthString())
Output:

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec

func (*Carbon) ToShortTimeMicroString

func (c *Carbon) ToShortTimeMicroString(timezone ...string) string

ToShortTimeMicroString outputs a string in "150405.999999" layout. 输出 "150405.999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortTimeMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortTimeMicroString())
Output:

131415.999999
000000

func (*Carbon) ToShortTimeMilliString

func (c *Carbon) ToShortTimeMilliString(timezone ...string) string

ToShortTimeMilliString outputs a string in "150405.999" layout. 输出 "150405.999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortTimeMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortTimeMilliString())
Output:

131415.999
000000

func (*Carbon) ToShortTimeNanoString

func (c *Carbon) ToShortTimeNanoString(timezone ...string) string

ToShortTimeNanoString outputs a string in "150405.999999999" layout. 输出 "150405.999999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortTimeNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortTimeNanoString())
Output:

131415.999999999
000000

func (*Carbon) ToShortTimeString

func (c *Carbon) ToShortTimeString(timezone ...string) string

ToShortTimeString outputs a string in "150405" layout. 输出 "150405" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToShortTimeString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToShortTimeString())
Output:

131415
000000

func (*Carbon) ToShortWeekString

func (c *Carbon) ToShortWeekString(timezone ...string) string

ToShortWeekString outputs a string in short week layout like "Sun", i18n is supported. 输出缩写星期字符串,支持 i18n

Example
fmt.Println(carbon.Parse("2020-08-01").ToShortWeekString())
fmt.Println(carbon.Parse("2020-08-02").ToShortWeekString())
fmt.Println(carbon.Parse("2020-08-03").ToShortWeekString())
fmt.Println(carbon.Parse("2020-08-04").ToShortWeekString())
fmt.Println(carbon.Parse("2020-08-05").ToShortWeekString())
fmt.Println(carbon.Parse("2020-08-06").ToShortWeekString())
fmt.Println(carbon.Parse("2020-08-07").ToShortWeekString())
Output:

Sat
Sun
Mon
Tue
Wed
Thu
Fri

func (*Carbon) ToString

func (c *Carbon) ToString(timezone ...string) string

ToString outputs a string in "2006-01-02 15:04:05.999999999 -0700 MST" layout. 输出 "2006-01-02 15:04:05.999999999 -0700 MST" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05 13:14:15").ToString())
fmt.Println(carbon.Parse("2020-08-05 13:14:15", carbon.PRC).ToString())
Output:

2020-08-05 13:14:15 +0000 UTC
2020-08-05 13:14:15 +0800 CST

func (*Carbon) ToTimeMicroString

func (c *Carbon) ToTimeMicroString(timezone ...string) string

ToTimeMicroString outputs a string in "15:04:05.999999" layout. 输出 "15:04:05.999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToTimeMicroString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToTimeMicroString())
Output:

13:14:15.999999
00:00:00

func (*Carbon) ToTimeMilliString

func (c *Carbon) ToTimeMilliString(timezone ...string) string

ToTimeMilliString outputs a string in "15:04:05.999" layout. 输出 "15:04:05.999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToTimeMilliString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToTimeMilliString())
Output:

13:14:15.999
00:00:00

func (*Carbon) ToTimeNanoString

func (c *Carbon) ToTimeNanoString(timezone ...string) string

ToTimeNanoString outputs a string in "15:04:05.999999999" layout. 输出 "15:04:05.999999999" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToTimeNanoString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToTimeNanoString())
Output:

13:14:15.999999999
00:00:00

func (*Carbon) ToTimeString

func (c *Carbon) ToTimeString(timezone ...string) string

ToTimeString outputs a string in "15:04:05" layout. 输出 "15:04:05" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToTimeString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToTimeString())
Output:

13:14:15
00:00:00

func (*Carbon) ToUnixDateString

func (c *Carbon) ToUnixDateString(timezone ...string) string

ToUnixDateString outputs a string in "Mon Jan _2 15:04:05 MST 2006" layout. 输出 "Mon Jan _2 15:04:05 MST 2006" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToUnixDateString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToUnixDateString())
Output:

Wed Aug  5 13:14:15 UTC 2020
Wed Aug  5 00:00:00 CST 2020

func (*Carbon) ToW3cString

func (c *Carbon) ToW3cString(timezone ...string) string

ToW3cString outputs a string in "2006-01-02T15:04:05Z07:00" layout. 输出 "2006-01-02T15:04:05Z07:00" 格式字符串

Example
fmt.Println(carbon.Parse("2020-08-05T13:14:15.999999999+00:00").ToW3cString())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ToW3cString())
Output:

2020-08-05T13:14:15Z
2020-08-05T00:00:00+08:00

func (*Carbon) ToWeekString

func (c *Carbon) ToWeekString(timezone ...string) string

ToWeekString outputs a string in week layout like "Sunday", i18n is supported. 输出完整星期字符串,支持 i18n

Example
fmt.Println(carbon.Parse("2020-08-01").ToWeekString())
fmt.Println(carbon.Parse("2020-08-02").ToWeekString())
fmt.Println(carbon.Parse("2020-08-03").ToWeekString())
fmt.Println(carbon.Parse("2020-08-04").ToWeekString())
fmt.Println(carbon.Parse("2020-08-05").ToWeekString())
fmt.Println(carbon.Parse("2020-08-06").ToWeekString())
fmt.Println(carbon.Parse("2020-08-07").ToWeekString())
Output:

Saturday
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday

func (*Carbon) Week

func (c *Carbon) Week() int

Week gets current week like 6, start from 0. 获取当前周(从0开始)

Example
fmt.Println(carbon.Parse("2020-08-03").Week())
fmt.Println(carbon.Parse("2020-08-04").Week())
fmt.Println(carbon.Parse("2020-08-05").Week())
fmt.Println(carbon.Parse("2020-08-09").Week())
Output:

0
1
2
6

func (*Carbon) WeekEndsAt added in v2.6.3

func (c *Carbon) WeekEndsAt() Weekday

WeekEndsAt returns end day of the week. 获取一周的结束日期

Example
fmt.Println(carbon.Now().SetWeekStartsAt(carbon.Sunday).WeekEndsAt())
fmt.Println(carbon.Now().SetWeekStartsAt(carbon.Monday).WeekEndsAt())
Output:

Saturday
Sunday

func (*Carbon) WeekOfMonth

func (c *Carbon) WeekOfMonth() int

WeekOfMonth gets week of month like 1. 获取本月的第几周

Example
fmt.Println(carbon.Parse("2021-07-01").WeekOfMonth())
fmt.Println(carbon.Parse("2021-07-02").WeekOfMonth())
fmt.Println(carbon.Parse("2021-07-03").WeekOfMonth())
fmt.Println(carbon.Parse("2021-07-04").WeekOfMonth())
fmt.Println(carbon.Parse("2021-07-05").WeekOfMonth())
fmt.Println(carbon.Parse("2021-07-06").WeekOfMonth())
Output:

1
1
1
1
2
2

func (*Carbon) WeekOfYear

func (c *Carbon) WeekOfYear() int

WeekOfYear gets week of year like 1, refer to https://en.wikipedia.org/wiki/ISO_8601#Week_dates. 获取本年的第几周

Example
fmt.Println(carbon.Parse("2021-01-01").WeekOfYear())
fmt.Println(carbon.Parse("2021-02-01").WeekOfYear())
fmt.Println(carbon.Parse("2021-03-01").WeekOfYear())
fmt.Println(carbon.Parse("2021-04-01").WeekOfYear())
Output:

53
5
9
13

func (*Carbon) WeekStartsAt added in v2.6.0

func (c *Carbon) WeekStartsAt() Weekday

WeekStartsAt returns start day of the week. 获取一周的开始日期

Example
fmt.Println(carbon.Now().SetWeekStartsAt(carbon.Sunday).WeekStartsAt())
fmt.Println(carbon.Now().SetWeekStartsAt(carbon.Monday).WeekStartsAt())
Output:

Sunday
Monday

func (*Carbon) Year

func (c *Carbon) Year() int

Year gets current year like 2020. 获取当前年

Example
fmt.Println(carbon.Parse("2010-08-05").Year())
fmt.Println(carbon.Parse("2011-08-05").Year())
fmt.Println(carbon.Parse("2020-08-05").Year())
fmt.Println(carbon.Parse("2021-08-05").Year())
Output:

2010
2011
2020
2021

func (*Carbon) ZoneName added in v2.6.0

func (c *Carbon) ZoneName() string

ZoneName gets timezone name like "CST". 获取时区名称

Example
fmt.Println(carbon.Now().ZoneName())
fmt.Println(carbon.Now(carbon.Tokyo).ZoneName())
fmt.Println(carbon.Now(carbon.PRC).ZoneName())
Output:

UTC
JST
CST

func (*Carbon) ZoneOffset added in v2.6.0

func (c *Carbon) ZoneOffset() int

ZoneOffset gets timezone offset seconds from the UTC timezone like 28800. 获取时区偏移量,单位秒

Example
fmt.Println(carbon.Parse("2020-08-05").ZoneOffset())
fmt.Println(carbon.Parse("2020-08-05", carbon.Tokyo).ZoneOffset())
fmt.Println(carbon.Parse("2020-08-05", carbon.PRC).ZoneOffset())
Output:

0
32400
28800

type Date

type Date string

Date defines a Date type. 定义 Date 字段类型

func (Date) SetFormat added in v2.6.0

func (t Date) SetFormat() string

SetFormat implements FormatFactory interface for Date type. 实现 FormatFactory 接口

func (Date) SetLayout added in v2.6.0

func (t Date) SetLayout() string

SetLayout implements LayoutFactory interface for Date type. 实现 LayoutFactory 接口

type DateMicro

type DateMicro string

DateMicro defines a DateMicro type. 定义 DateMicro 字段类型

func (DateMicro) SetFormat added in v2.6.2

func (t DateMicro) SetFormat() string

SetFormat implements FormatFactory interface for DateMicro type. 实现 FormatFactory 接口

func (DateMicro) SetLayout added in v2.6.2

func (t DateMicro) SetLayout() string

SetLayout implements LayoutFactory interface for DateTimeMicro type. 实现 LayoutFactory 接口

type DateMilli

type DateMilli string

DateMilli defines a DateMilli type. 定义 DateMilli 字段类型

func (DateMilli) SetFormat added in v2.6.2

func (t DateMilli) SetFormat() string

SetFormat implements FormatFactory interface for DateMilli type. 实现 FormatFactory 接口

func (DateMilli) SetLayout added in v2.6.2

func (t DateMilli) SetLayout() string

SetLayout implements LayoutFactory interface for DateMilli type. 实现 LayoutFactory 接口

type DateNano

type DateNano string

DateNano defines a DateNano type. 定义 DateNano 字段类型

func (DateNano) SetFormat added in v2.6.2

func (t DateNano) SetFormat() string

SetFormat implements FormatFactory interface for DateNano type. 实现 FormatFactory 接口

func (DateNano) SetLayout added in v2.6.2

func (t DateNano) SetLayout() string

SetLayout implements LayoutFactory interface for DateNano type. 实现 LayoutFactory 接口

type DateTime

type DateTime string

DateTime defines a DateTime type. 定义 DateTime 字段类型

func (DateTime) SetFormat added in v2.6.0

func (t DateTime) SetFormat() string

SetFormat implements FormatFactory interface for DateTime type. 实现 FormatFactory 接口

func (DateTime) SetLayout added in v2.6.0

func (t DateTime) SetLayout() string

SetLayout implements LayoutFactory interface for DateTime type. 实现 LayoutFactory 接口

type DateTimeMicro

type DateTimeMicro string

DateTimeMicro defines a DateTimeMicro type. 定义 DateTimeMicro 字段类型

func (DateTimeMicro) SetFormat added in v2.6.2

func (t DateTimeMicro) SetFormat() string

SetFormat implements FormatFactory interface for DateTimeMicro type. 实现 FormatFactory 接口

func (DateTimeMicro) SetLayout added in v2.6.2

func (t DateTimeMicro) SetLayout() string

SetLayout implements LayoutFactory interface for DateTimeMicro type. 实现 LayoutFactory 接口

type DateTimeMilli

type DateTimeMilli string

DateTimeMilli defines a DateTimeMilli type. 定义 DateTimeMilli 字段类型

func (DateTimeMilli) SetFormat added in v2.6.2

func (t DateTimeMilli) SetFormat() string

SetFormat implements FormatFactory interface for DateTimeMilli type. 实现 FormatFactory 接口

func (DateTimeMilli) SetLayout added in v2.6.2

func (t DateTimeMilli) SetLayout() string

SetLayout implements LayoutFactory interface for DateTimeMilli type. 实现 LayoutFactory 接口

type DateTimeNano

type DateTimeNano string

DateTimeNano defines a DateTimeNano type. 定义 DateTimeNano 字段类型

func (DateTimeNano) SetFormat added in v2.6.2

func (t DateTimeNano) SetFormat() string

SetFormat implements FormatFactory interface for DateTimeNano type. 实现 FormatFactory 接口

func (DateTimeNano) SetLayout added in v2.6.2

func (t DateTimeNano) SetLayout() string

SetLayout implements LayoutFactory interface for DateTimeNano type. 实现 LayoutFactory 接口

type Default

type Default struct {
	Layout       string
	Timezone     string
	Locale       string
	WeekStartsAt Weekday
	WeekendDays  []Weekday
}

Default defines a Default struct. 定义 Default 结构体

type Duration added in v2.6.3

type Duration = time.Duration

func MaxDuration added in v2.6.2

func MaxDuration() Duration

MaxDuration returns the maximum duration value. 返回 Duration 的最大值

Example
fmt.Println(carbon.MaxDuration().Seconds())
Output:

9.223372036854776e+09

func MinDuration added in v2.6.2

func MinDuration() Duration

MinDuration returns the minimum duration value. 返回 Duration 的最小值

Example
fmt.Println(carbon.MinDuration().Seconds())
Output:

-9.223372036854776e+09

type FormatFactory added in v2.6.1

type FormatFactory interface {
	~string
	SetFormat() string
}

FormatFactory defines a FormatFactory interface. 定义 FormatFactory 接口

type FormatType added in v2.6.0

type FormatType[T FormatFactory] struct {
	*Carbon
}

FormatType defines a FormatType generic struct. 定义 FormatType 泛型结构体

func NewFormatType added in v2.6.0

func NewFormatType[T FormatFactory](carbon *Carbon) FormatType[T]

NewFormatType returns a new FormatType generic instance. 返回 FormatType 泛型实例

func (FormatType[T]) GormDataType added in v2.6.0

func (t FormatType[T]) GormDataType() string

GormDataType sets gorm data type for FormatType generic struct. 设置 gorm 数据类型

func (FormatType[T]) MarshalJSON added in v2.6.0

func (t FormatType[T]) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshal interface for FormatType generic struct. 实现 json.Marshaler 接口

Example
//type RFC3339Format string
//
//func (RFC3339Format) SetFormat() string {
//	return carbon.RFC3339Format
//}
type User struct {
	Date     carbon.FormatType[carbon.Date]     `json:"date"`
	Time     carbon.FormatType[carbon.Time]     `json:"time"`
	DateTime carbon.FormatType[carbon.DateTime] `json:"date_time"`
	Customer carbon.FormatType[RFC3339Format]   `json:"customer"`
}

var user User

c := carbon.Parse("2020-08-05 13:14:15")

user.Date = carbon.NewFormatType[carbon.Date](c)
user.Time = carbon.NewFormatType[carbon.Time](c)
user.DateTime = carbon.NewFormatType[carbon.DateTime](c)
user.Customer = carbon.NewFormatType[RFC3339Format](c)

data, _ := json.Marshal(&user)
fmt.Printf("%s", data)
Output:

{"date":"2020-08-05","time":"13:14:15","date_time":"2020-08-05 13:14:15","customer":"2020-08-05T13:14:15Z"}

func (*FormatType[T]) Scan added in v2.6.0

func (t *FormatType[T]) Scan(src any) error

Scan implements driver.Scanner interface for FormatType generic struct. 实现 driver.Scanner 接口

func (FormatType[T]) String added in v2.6.0

func (t FormatType[T]) String() string

String implements Stringer interface for FormatType generic struct. 实现 Stringer 接口

func (*FormatType[T]) UnmarshalJSON added in v2.6.0

func (t *FormatType[T]) UnmarshalJSON(b []byte) error

UnmarshalJSON implements json.Unmarshal interface for FormatType generic struct. 实现 json.Unmarshaler 接口

Example
//type RFC3339Format string
//
//func (RFC3339Format) SetFormat() string {
//	return carbon.RFC3339Format
//}

type User struct {
	Date     carbon.FormatType[carbon.Date]     `json:"date"`
	Time     carbon.FormatType[carbon.Time]     `json:"time"`
	DateTime carbon.FormatType[carbon.DateTime] `json:"date_time"`
	Customer carbon.FormatType[RFC3339Format]   `json:"customer"`
}

var user User

value := `{"date":"2020-08-05","time":"13:14:15","date_time":"2020-08-05 13:14:15","customer":"2020-08-05T13:14:15Z"}`
_ = json.Unmarshal([]byte(value), &user)

fmt.Println(user.Date.String())
fmt.Println(user.Time.String())
fmt.Println(user.DateTime.String())
fmt.Println(user.Customer.String())
Output:

2020-08-05
13:14:15
2020-08-05 13:14:15
2020-08-05T13:14:15Z

func (FormatType[T]) Value added in v2.6.0

func (t FormatType[T]) Value() (driver.Value, error)

Value implements driver.Valuer interface for FormatType generic struct. 实现 driver.Valuer 接口

type FrozenNow added in v2.6.3

type FrozenNow struct {
	// contains filtered or unexported fields
}

FrozenNow defines a FrozenNow struct. 定义 FrozenNow 结构体

type Language

type Language struct {
	Error error
	// contains filtered or unexported fields
}

Language defines a Language struct. 定义 Language 结构体

func NewLanguage

func NewLanguage() *Language

NewLanguage returns a new Language instance. 初始化 Language 结构体

func (*Language) SetLocale

func (lang *Language) SetLocale(locale string) *Language

SetLocale sets language locale. 设置区域

Example
lang := carbon.NewLanguage()

lang.SetLocale("en")
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).Constellation())
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).Season())
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).DiffForHumans(carbon.Parse("2024-08-05")))
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).ToMonthString())
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).ToShortMonthString())
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).ToWeekString())
fmt.Printf("en:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang).ToShortWeekString())

lang.SetLocale("zh-CN")
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).Constellation())
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).Season())
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).DiffForHumans(carbon.Parse("2024-08-05")))
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).ToMonthString())
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).ToShortMonthString())
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).ToWeekString())
fmt.Printf("zh-CN:%s\n", carbon.Parse("2020-08-05", carbon.PRC).SetLanguage(lang).ToShortWeekString())
Output:

en:Leo
en:Summer
en:4 years before
en:August
en:Aug
en:Wednesday
en:Wed
zh-CN:狮子座
zh-CN:夏季
zh-CN:4 年前
zh-CN:八月
zh-CN:8月
zh-CN:星期三
zh-CN:周三

func (*Language) SetResources

func (lang *Language) SetResources(resources map[string]string) *Language

SetResources sets language resources. 设置资源

Example
resources1 := map[string]string{
	"months":       "Ⅰ月|Ⅱ月|Ⅲ月|Ⅳ月|Ⅴ月|Ⅵ月|Ⅶ月|Ⅷ月|Ⅸ月|Ⅹ月|Ⅺ月|Ⅻ月",
	"short_months": "Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ",
}

lang1 := carbon.NewLanguage()
lang1.SetLocale("en").SetResources(resources1)

fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).Constellation())
fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).Season())
fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).DiffForHumans(carbon.Parse("2024-08-05")))
fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).ToMonthString())
fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).ToShortMonthString())
fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).ToWeekString())
fmt.Printf("lang1:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang1).ToShortWeekString())

resources2 := map[string]string{
	"constellations": "Aries|Taurus|Gemini|Cancer|Leo|Virgo|Libra|Scorpio|Sagittarius|Capricorn|Aquarius|Pisces",
	"seasons":        "spring|summer|autumn|winter",
	"months":         "January|February|March|April|May|June|July|August|September|October|November|December",
	"short_months":   "Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",
	"weeks":          "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday",
	"short_weeks":    "Sun|Mon|Tue|Wed|Thu|Fri|Sat",
	"year":           "1 yr|%d yrs",
	"month":          "1 mo|%d mos",
	"week":           "%dw",
	"day":            "%dd",
	"hour":           "%dh",
	"minute":         "%dm",
	"second":         "%ds",
	"now":            "just now",
	"ago":            "%s ago",
	"from_now":       "in %s",
	"before":         "%s before",
	"after":          "%s after",
}

lang2 := carbon.NewLanguage()
lang2.SetResources(resources2)

fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).Constellation())
fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).Season())
fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).DiffForHumans(carbon.Parse("2024-08-05")))
fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).ToMonthString())
fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).ToShortMonthString())
fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).ToWeekString())
fmt.Printf("lang2:%s\n", carbon.Parse("2020-08-05").SetLanguage(lang2).ToShortWeekString())
Output:

lang1:Leo
lang1:Summer
lang1:4 years before
lang1:Ⅷ月
lang1:Ⅷ
lang1:Wednesday
lang1:Wed
lang2:Leo
lang2:summer
lang2:4 yrs before
lang2:August
lang2:Aug
lang2:Wednesday
lang2:Wed

type LayoutFactory added in v2.6.1

type LayoutFactory interface {
	~string
	SetLayout() string
}

LayoutFactory defines a LayoutFactory interface 定义 LayoutFactory 接口

type LayoutType added in v2.6.0

type LayoutType[T LayoutFactory] struct {
	*Carbon
}

LayoutType defines a LayoutType generic struct 定义 LayoutType 泛型结构体

func NewLayoutType added in v2.6.0

func NewLayoutType[T LayoutFactory](carbon *Carbon) LayoutType[T]

NewLayoutType returns a new LayoutType generic instance. 返回 LayoutType 泛型实例

func (LayoutType[T]) GormDataType added in v2.6.0

func (t LayoutType[T]) GormDataType() string

GormDataType sets gorm data type for LayoutType generic struct. 设置 gorm 数据类型

func (LayoutType[T]) MarshalJSON added in v2.6.0

func (t LayoutType[T]) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshal interface for LayoutType generic struct. 实现 json.Marshaler 接口

Example
//type W3cLayout string
//
//func (W3cLayout) SetLayout() string {
//	return carbon.W3cLayout
//}

type User struct {
	Date     carbon.LayoutType[carbon.Date]     `json:"date"`
	Time     carbon.LayoutType[carbon.Time]     `json:"time"`
	DateTime carbon.LayoutType[carbon.DateTime] `json:"date_time"`
	Customer carbon.LayoutType[W3cLayout]       `json:"customer"`
}

var user User

c := carbon.Parse("2020-08-05 13:14:15")

user.Date = carbon.NewLayoutType[carbon.Date](c)
user.Time = carbon.NewLayoutType[carbon.Time](c)
user.DateTime = carbon.NewLayoutType[carbon.DateTime](c)
user.Customer = carbon.NewLayoutType[W3cLayout](c)

data, _ := json.Marshal(&user)
fmt.Printf("%s", data)
Output:

{"date":"2020-08-05","time":"13:14:15","date_time":"2020-08-05 13:14:15","customer":"2020-08-05T13:14:15Z"}

func (*LayoutType[T]) Scan added in v2.6.0

func (t *LayoutType[T]) Scan(src any) error

Scan implements driver.Scanner interface for LayoutType generic struct. 实现 driver.Scanner 接口

func (LayoutType[T]) String added in v2.6.0

func (t LayoutType[T]) String() string

String implements Stringer interface for LayoutType generic struct. 实现 Stringer 接口

func (*LayoutType[T]) UnmarshalJSON added in v2.6.0

func (t *LayoutType[T]) UnmarshalJSON(b []byte) error

UnmarshalJSON implements json.Unmarshal interface for LayoutType generic struct. 实现 json.Unmarshaler 接口

Example
//type W3cLayout string
//
//func (W3cLayout) SetLayout() string {
//	return carbon.W3cLayout
//}
type User struct {
	Date     carbon.LayoutType[carbon.Date]     `json:"date"`
	Time     carbon.LayoutType[carbon.Time]     `json:"time"`
	DateTime carbon.LayoutType[carbon.DateTime] `json:"date_time"`
	Customer carbon.LayoutType[W3cLayout]       `json:"customer"`
}

var user User

value := `{"date":"2020-08-05","time":"13:14:15","date_time":"2020-08-05 13:14:15","customer":"2020-08-05T13:14:15Z"}`
_ = json.Unmarshal([]byte(value), &user)

fmt.Println(user.Date.String())
fmt.Println(user.Time.String())
fmt.Println(user.DateTime.String())
fmt.Println(user.Customer.String())
Output:

2020-08-05
13:14:15
2020-08-05 13:14:15
2020-08-05T13:14:15Z

func (LayoutType[T]) Value added in v2.6.0

func (t LayoutType[T]) Value() (driver.Value, error)

Value implements driver.Valuer interface for LayoutType generic struct. 实现 driver.Valuer 接口

type Location added in v2.6.3

type Location = time.Location

type StdTime added in v2.6.3

type StdTime = time.Time

type Time

type Time string

Time defines a Time struct. 定义 Time 字段类型

func (Time) SetFormat added in v2.6.0

func (t Time) SetFormat() string

SetFormat implements FormatFactory interface for Time type. 实现 FormatFactory 接口

func (Time) SetLayout added in v2.6.0

func (t Time) SetLayout() string

SetLayout implements LayoutFactory interface for Time type. 实现 LayoutFactory 接口

type TimeMicro

type TimeMicro string

TimeMicro defines a TimeMicro type. 定义 TimeMicro 字段类型

func (TimeMicro) SetFormat added in v2.6.2

func (t TimeMicro) SetFormat() string

SetFormat implements FormatFactory interface for TimeMicro type. 实现 FormatFactory 接口

func (TimeMicro) SetLayout added in v2.6.2

func (t TimeMicro) SetLayout() string

SetLayout implements LayoutFactory interface for TimeMicro type. 实现 LayoutFactory 接口

type TimeMilli

type TimeMilli string

TimeMilli defines a TimeMilli type. 定义 TimeMilli 字段类型

func (TimeMilli) SetFormat added in v2.6.2

func (t TimeMilli) SetFormat() string

SetFormat implements FormatFactory interface for TimeMilli type. 实现 FormatFactory 接口

func (TimeMilli) SetLayout added in v2.6.2

func (t TimeMilli) SetLayout() string

SetLayout implements LayoutFactory interface for TimeMilli type. 实现 LayoutFactory 接口

type TimeNano

type TimeNano string

TimeNano defines a TimeNano type. 定义 TimeNano 字段类型

func (TimeNano) SetFormat added in v2.6.2

func (t TimeNano) SetFormat() string

SetFormat implements FormatFactory interface for TimeNano type. 实现 FormatFactory 接口

func (TimeNano) SetLayout added in v2.6.2

func (t TimeNano) SetLayout() string

SetLayout implements LayoutFactory interface for TimeNano type. 实现 LayoutFactory 接口

type Timestamp

type Timestamp int64

Timestamp defines a Timestamp type. 定义 Timestamp 字段类型

func (Timestamp) SetPrecision added in v2.6.0

func (t Timestamp) SetPrecision() int64

SetPrecision implements TimestampFactory interface for Timestamp type. 实现 TimestampFactory 接口

type TimestampFactory added in v2.6.1

type TimestampFactory interface {
	~int64
	SetPrecision() int64
}

TimestampFactory defines a TimestampFactory interface. 定义 TimestampFactory 接口

type TimestampMicro

type TimestampMicro int64

TimestampMicro defines a TimestampMicro type. 定义 TimestampMicro 字段类型

func (TimestampMicro) SetPrecision added in v2.6.0

func (t TimestampMicro) SetPrecision() int64

SetPrecision implements TimestampFactory interface for TimestampMicro type. 实现 TimestampFactory 接口

type TimestampMilli

type TimestampMilli int64

TimestampMilli defines a TimestampMilli type. 定义 TimestampMilli 字段类型

func (TimestampMilli) SetPrecision added in v2.6.0

func (t TimestampMilli) SetPrecision() int64

SetPrecision implements TimestampFactory interface for TimestampMilli type. 实现 TimestampFactory 接口

type TimestampNano

type TimestampNano int64

TimestampNano defines a TimestampNano type. 定义 TimestampNano 字段类型

func (TimestampNano) SetPrecision added in v2.6.0

func (t TimestampNano) SetPrecision() int64

SetPrecision implements TimestampFactory interface for TimestampNano type. 实现 TimestampFactory 接口

type TimestampType added in v2.6.0

type TimestampType[T TimestampFactory] struct {
	*Carbon
}

TimestampType defines a TimestampType generic struct. 定义 TimestampType 泛型结构体

func NewTimestampType added in v2.6.0

func NewTimestampType[T TimestampFactory](carbon *Carbon) TimestampType[T]

NewTimestampType returns a new TimestampType generic instance. 返回 TimestampType 泛型实例

func (TimestampType[T]) GormDataType added in v2.6.0

func (t TimestampType[T]) GormDataType() string

GormDataType sets gorm data type for TimestampType generic struct. 设置 gorm 数据类型

func (TimestampType[T]) Int64 added in v2.6.0

func (t TimestampType[T]) Int64() int64

Int64 returns the timestamp value. 返回时间戳

func (TimestampType[T]) MarshalJSON added in v2.6.0

func (t TimestampType[T]) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshal interface for TimestampType generic struct. 实现 json.Marshaler 接口

Example
type User struct {
	Timestamp      carbon.TimestampType[carbon.Timestamp]      `json:"timestamp"`
	TimestampMilli carbon.TimestampType[carbon.TimestampMilli] `json:"timestamp_milli"`
	TimestampMicro carbon.TimestampType[carbon.TimestampMicro] `json:"timestamp_micro"`
	TimestampNano  carbon.TimestampType[carbon.TimestampNano]  `json:"timestamp_nano"`
}

var user User

c := carbon.Parse("2020-08-05 13:14:15")

user.Timestamp = carbon.NewTimestampType[carbon.Timestamp](c)
user.TimestampMilli = carbon.NewTimestampType[carbon.TimestampMilli](c)
user.TimestampMicro = carbon.NewTimestampType[carbon.TimestampMicro](c)
user.TimestampNano = carbon.NewTimestampType[carbon.TimestampNano](c)

data, _ := json.Marshal(&user)
fmt.Printf("%s", data)
Output:

{"timestamp":1596633255,"timestamp_milli":1596633255000,"timestamp_micro":1596633255000000,"timestamp_nano":1596633255000000000}

func (*TimestampType[T]) Scan added in v2.6.0

func (t *TimestampType[T]) Scan(src any) (err error)

Scan implements driver.Scanner interface for TimestampType generic struct. 实现 driver.Scanner 接口

func (TimestampType[T]) String added in v2.6.0

func (t TimestampType[T]) String() string

String implements Stringer interface for TimestampType generic struct. 实现 Stringer 接口

func (*TimestampType[T]) UnmarshalJSON added in v2.6.0

func (t *TimestampType[T]) UnmarshalJSON(b []byte) error

UnmarshalJSON implements json.Unmarshal interface for TimestampType generic struct. 实现 json.Unmarshaler 接口

Example
type User struct {
	Timestamp      carbon.TimestampType[carbon.Timestamp]      `json:"timestamp"`
	TimestampMilli carbon.TimestampType[carbon.TimestampMilli] `json:"timestamp_milli"`
	TimestampMicro carbon.TimestampType[carbon.TimestampMicro] `json:"timestamp_micro"`
	TimestampNano  carbon.TimestampType[carbon.TimestampNano]  `json:"timestamp_nano"`
}

var user User

value := `{"timestamp":1596633255,"timestamp_milli":1596633255000,"timestamp_micro":1596633255000000,"timestamp_nano":1596633255000000000}`
_ = json.Unmarshal([]byte(value), &user)

fmt.Printf("string(%s)\n", user.Timestamp.String())
fmt.Printf("string(%s)\n", user.TimestampMilli.String())
fmt.Printf("string(%s)\n", user.TimestampMicro.String())
fmt.Printf("string(%s)\n", user.TimestampNano.String())

fmt.Printf("int64(%d)\n", user.Timestamp.Int64())
fmt.Printf("int64(%d)\n", user.TimestampMilli.Int64())
fmt.Printf("int64(%d)\n", user.TimestampMicro.Int64())
fmt.Printf("int64(%d)\n", user.TimestampNano.Int64())
Output:

string(1596633255)
string(1596633255000)
string(1596633255000000)
string(1596633255000000000)
int64(1596633255)
int64(1596633255000)
int64(1596633255000000)
int64(1596633255000000000)

func (TimestampType[T]) Value added in v2.6.0

func (t TimestampType[T]) Value() (driver.Value, error)

Value implements driver.Valuer interface for TimestampType generic struct. 实现 driver.Valuer 接口

type Weekday added in v2.6.3

type Weekday = time.Weekday

Directories

Path Synopsis
Package calendar is part of the carbon package.
Package calendar is part of the carbon package.
julian
Package julian is part of the carbon package.
Package julian is part of the carbon package.
lunar
Package lunar is part of the carbon package.
Package lunar is part of the carbon package.
persian
Package persian is part of the carbon package.
Package persian is part of the carbon package.

Jump to

Keyboard shortcuts

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