Skip to content

Commit 9859d8b

Browse files
committed
v1.3.2按照功能拆分文件
1 parent 26f3068 commit 9859d8b

35 files changed

+7625
-8858
lines changed

README.en.md

Lines changed: 188 additions & 116 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 176 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -143,43 +143,6 @@ carbon.Time2Carbon(time.Now())
143143
carbon.Now().Carbon2Time() 或 carbon.Now().Time
144144
```
145145

146-
##### 时间设置
147-
```go
148-
// 设置时区
149-
carbon.SetTimezone(carbon.PRC).Now().ToDateTimeString() // 2020-08-05 13:14:15
150-
carbon.SetTimezone(carbon.Tokyo).Now().ToDateTimeString() // 2020-08-05 14:14:15
151-
carbon.SetTimezone(carbon.Tokyo).SetTimezone(carbon.PRC).Now().ToDateTimeString() // 2020-08-05 13:14:15
152-
153-
// 设置语言
154-
carbon.Parse("2020-07-05 13:14:15").SetLocale("en").DiffForHumans()) // 1 month before
155-
carbon.Parse("2020-07-05 13:14:15").SetLocale("zh-CN").DiffForHumans()) // 1 月前
156-
157-
// 设置年
158-
carbon.Parse("2019-08-05").SetYear(2020).ToDateString() // 2020-08-05
159-
carbon.Parse("2020-02-29").SetYear(2019).ToDateString() // 2019-03-01
160-
161-
// 设置月
162-
carbon.Parse("2020-01-31").SetMonth(2).ToDateString() // 2020-03-02
163-
carbon.Parse("2020-08-05").SetMonth(2).ToDateString() // 2020-02-05
164-
165-
// 设置日
166-
carbon.Parse("2019-08-05").SetDay(31).ToDateString() // 2020-08-31
167-
carbon.Parse("2020-02-01").SetDay(31).ToDateString() // 2020-03-02
168-
169-
// 设置时
170-
carbon.Parse("2020-08-05 13:14:15").SetHour(10).ToDateTimeString() // 2020-08-05 10:14:15
171-
carbon.Parse("2020-08-05 13:14:15").SetHour(24).ToDateTimeString() // 2020-08-06 00:14:15
172-
173-
// 设置分
174-
carbon.Parse("2020-08-05 13:14:15").SetMinute(10).ToDateTimeString() // 2020-08-05 13:10:15
175-
carbon.Parse("2020-08-05 13:14:15").SetMinute(60).ToDateTimeString() // 2020-08-05 14:00:15
176-
177-
// 设置秒
178-
carbon.Parse("2020-08-05 13:14:15").SetSecond(10).ToDateTimeString() // 2020-08-05 13:14:10
179-
carbon.Parse("2020-08-05 13:14:15").SetSecond(60).ToDateTimeString() // 2020-08-05 13:15:00
180-
```
181-
>更多时区常量请查看[constant.go](./constant.go)文件
182-
183146
##### 开始时间、结束时间
184147
```go
185148
// 本年开始时间
@@ -211,6 +174,11 @@ carbon.Parse("2020-08-05 13:14:15").EndOfHour().ToDateTimeString() // 2020-08-05
211174
carbon.Parse("2020-08-05 13:14:15").StartOfMinute().ToDateTimeString() // 2020-08-05 13:14:00
212175
// 本分钟结束时间
213176
carbon.Parse("2020-08-05 13:14:15").EndOfMinute().ToDateTimeString() // 2020-08-05 13:14:59
177+
178+
// 本秒开始时间
179+
carbon.Parse("2020-08-05 13:14:15").StartOfSecond().Format("Y-m-d H:i:s.u") // 2020-08-05 13:14:15.0
180+
// 本秒结束时间
181+
carbon.Parse("2020-08-05 13:14:15").EndOfSecond().Format("Y-m-d H:i:s.u") // 2020-08-05 13:14:15.999
214182
```
215183

216184
##### 时间旅行
@@ -389,73 +357,17 @@ carbon.Parse("2020-08-05 13:14:15").DiffInSeconds(carbon.Parse("2020-08-05 13:14
389357
// 相差多少秒(绝对值)
390358
carbon.Parse("2020-08-05 13:14:15").DiffInSecondsWithAbs(carbon.Parse("2020-08-05 13:14:14")) // 1
391359

392-
// 对人类友好的可读格式时间差(默认英文)
393-
carbon.Now().DiffForHumans()) // just now
394-
carbon.Now().SubYears(1).DiffForHumans() // 1 years ago
395-
carbon.Now().SubYears(2).DiffForHumans() // 2 year ago
396-
carbon.Now().AddYears(1).DiffForHumans() // in 1 year
397-
carbon.Now().AddYears(2).DiffForHumans() // in 2 years
398-
// 对人类友好的可读格式时间差(指定语言)
399-
carbon.Now().SetLocale("zh-CN").DiffForHumans() // 刚刚
400-
carbon.Now().SubMonths(1).SetLocale("zh-CN").DiffForHumans() // 1 月前
401-
carbon.Now().AddMonths(2).SetLocale("zh-CN").DiffForHumans() // 2 月后
402-
403-
```
404-
405-
##### 时间比较
406-
```go
407-
// 是否大于
408-
carbon.Parse("2020-08-05 13:14:15").Gt(carbon.Parse("2020-08-04 13:14:15")) // true
409-
carbon.Parse("2020-08-05 13:14:15").Gt(carbon.Parse("2020-08-05 13:14:15")) // false
410-
carbon.Parse("2020-08-05 13:14:15").Compare(">", carbon.Parse("2020-08-04 13:14:15")) // true
411-
carbon.Parse("2020-08-05 13:14:15").Compare(">", carbon.Parse("2020-08-05 13:14:15")) // false
412-
413-
// 是否小于
414-
carbon.Parse("2020-08-05 13:14:15").Lt(carbon.Parse("2020-08-06 13:14:15")) // true
415-
carbon.Parse("2020-08-05 13:14:15").Lt(carbon.Parse("2020-08-05 13:14:15")) // false
416-
carbon.Parse("2020-08-05 13:14:15").Compare("<", carbon.Parse("2020-08-06 13:14:15")) // true
417-
carbon.Parse("2020-08-05 13:14:15").Compare("<", carbon.Parse("2020-08-05 13:14:15")) // false
418-
419-
// 是否等于
420-
carbon.Parse("2020-08-05 13:14:15").Eq(carbon.Parse("2020-08-05 13:14:15")) // true
421-
carbon.Parse("2020-08-05 13:14:15").Eq(carbon.Parse("2020-08-05 13:14:00")) // false
422-
carbon.Parse("2020-08-05 13:14:15").Compare("=", carbon.Parse("2020-08-05 13:14:15")) // true
423-
carbon.Parse("2020-08-05 13:14:15").Compare("=", carbon.Parse("2020-08-05 13:14:00")) // false
424-
425-
// 是否不等于
426-
carbon.Parse("2020-08-05 13:14:15").Ne(carbon.Parse("2020-08-06 13:14:15")) // true
427-
carbon.Parse("2020-08-05 13:14:15").Ne(carbon.Parse("2020-08-05 13:14:15")) // false
428-
carbon.Parse("2020-08-05 13:14:15").Compare("!=", carbon.Parse("2020-08-06 13:14:15")) // true
429-
carbon.Parse("2020-08-05 13:14:15").Compare("<>", carbon.Parse("2020-08-05 13:14:15")) // false
430-
431-
// 是否大于等于
432-
carbon.Parse("2020-08-05 13:14:15").Gte(carbon.Parse("2020-08-04 13:14:15")) // true
433-
carbon.Parse("2020-08-05 13:14:15").Gte(carbon.Parse("2020-08-05 13:14:15")) // true
434-
carbon.Parse("2020-08-05 13:14:15").Compare(">=", carbon.Parse("2020-08-04 13:14:15")) // true
435-
carbon.Parse("2020-08-05 13:14:15").Compare(">=", carbon.Parse("2020-08-05 13:14:15")) // true
436-
437-
// 是否小于等于
438-
carbon.Parse("2020-08-05 13:14:15").Lte(carbon.Parse("2020-08-06 13:14:15")) // true
439-
carbon.Parse("2020-08-05 13:14:15").Lte(carbon.Parse("2020-08-05 13:14:15")) // true
440-
carbon.Parse("2020-08-05 13:14:15").Compare("<=", carbon.Parse("2020-08-06 13:14:15")) // true
441-
carbon.Parse("2020-08-05 13:14:15").Compare("<=", carbon.Parse("2020-08-05 13:14:15")) // true
442-
443-
// 是否在两个时间之间(不包括这两个时间)
444-
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
445-
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
446-
447-
// 是否在两个时间之间(包括开始时间)
448-
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedStartTime(carbon.Parse("2020-08-05 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
449-
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedStartTime(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
450-
451-
// 是否在两个时间之间(包括结束时间)
452-
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedEndTime(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-05 13:14:15")) // true
453-
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedEndTime(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
454-
455-
// 是否在两个时间之间(包括这两个时间)
456-
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
457-
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
458-
360+
// 对人类友好的可读格式时间差
361+
carbon.Parse("2020-08-05 13:14:15").DiffForHumans()) // just now
362+
carbon.Parse("2019-08-05 13:14:15").DiffForHumans() // 1 year ago
363+
carbon.Parse("2018-08-05 13:14:15").DiffForHumans() // 2 years ago
364+
carbon.Parse("2021-08-05 13:14:15").DiffForHumans() // 1 year from now
365+
carbon.Parse("2022-08-05 13:14:15").DiffForHumans() // 2 years from now
366+
367+
carbon.Parse("2020-08-05 13:14:15").DiffForHumans(carbon.Now()) // 1 year before
368+
carbon.Parse("2019-08-05 13:14:15").DiffForHumans(carbon.Now()) // 2 years before
369+
carbon.Parse("2018-08-05 13:14:15").DiffForHumans(carbon.Now()) // 1 year after
370+
carbon.Parse("2022-08-05 13:14:15").DiffForHumans(carbon.Now()) // 2 years after
459371
```
460372

461373
##### 时间判断
@@ -538,6 +450,59 @@ carbon.Parse("2020-08-05").IsToday() // true
538450
carbon.Parse("2020-08-06 13:14:15").IsTomorrow() // true
539451
carbon.Parse("2020-08-06 00:00:00").IsTomorrow() // true
540452
carbon.Parse("2020-08-06").IsTomorrow() // true
453+
454+
// 是否大于
455+
carbon.Parse("2020-08-05 13:14:15").Gt(carbon.Parse("2020-08-04 13:14:15")) // true
456+
carbon.Parse("2020-08-05 13:14:15").Gt(carbon.Parse("2020-08-05 13:14:15")) // false
457+
carbon.Parse("2020-08-05 13:14:15").Compare(">", carbon.Parse("2020-08-04 13:14:15")) // true
458+
carbon.Parse("2020-08-05 13:14:15").Compare(">", carbon.Parse("2020-08-05 13:14:15")) // false
459+
460+
// 是否小于
461+
carbon.Parse("2020-08-05 13:14:15").Lt(carbon.Parse("2020-08-06 13:14:15")) // true
462+
carbon.Parse("2020-08-05 13:14:15").Lt(carbon.Parse("2020-08-05 13:14:15")) // false
463+
carbon.Parse("2020-08-05 13:14:15").Compare("<", carbon.Parse("2020-08-06 13:14:15")) // true
464+
carbon.Parse("2020-08-05 13:14:15").Compare("<", carbon.Parse("2020-08-05 13:14:15")) // false
465+
466+
// 是否等于
467+
carbon.Parse("2020-08-05 13:14:15").Eq(carbon.Parse("2020-08-05 13:14:15")) // true
468+
carbon.Parse("2020-08-05 13:14:15").Eq(carbon.Parse("2020-08-05 13:14:00")) // false
469+
carbon.Parse("2020-08-05 13:14:15").Compare("=", carbon.Parse("2020-08-05 13:14:15")) // true
470+
carbon.Parse("2020-08-05 13:14:15").Compare("=", carbon.Parse("2020-08-05 13:14:00")) // false
471+
472+
// 是否不等于
473+
carbon.Parse("2020-08-05 13:14:15").Ne(carbon.Parse("2020-08-06 13:14:15")) // true
474+
carbon.Parse("2020-08-05 13:14:15").Ne(carbon.Parse("2020-08-05 13:14:15")) // false
475+
carbon.Parse("2020-08-05 13:14:15").Compare("!=", carbon.Parse("2020-08-06 13:14:15")) // true
476+
carbon.Parse("2020-08-05 13:14:15").Compare("<>", carbon.Parse("2020-08-05 13:14:15")) // false
477+
478+
// 是否大于等于
479+
carbon.Parse("2020-08-05 13:14:15").Gte(carbon.Parse("2020-08-04 13:14:15")) // true
480+
carbon.Parse("2020-08-05 13:14:15").Gte(carbon.Parse("2020-08-05 13:14:15")) // true
481+
carbon.Parse("2020-08-05 13:14:15").Compare(">=", carbon.Parse("2020-08-04 13:14:15")) // true
482+
carbon.Parse("2020-08-05 13:14:15").Compare(">=", carbon.Parse("2020-08-05 13:14:15")) // true
483+
484+
// 是否小于等于
485+
carbon.Parse("2020-08-05 13:14:15").Lte(carbon.Parse("2020-08-06 13:14:15")) // true
486+
carbon.Parse("2020-08-05 13:14:15").Lte(carbon.Parse("2020-08-05 13:14:15")) // true
487+
carbon.Parse("2020-08-05 13:14:15").Compare("<=", carbon.Parse("2020-08-06 13:14:15")) // true
488+
carbon.Parse("2020-08-05 13:14:15").Compare("<=", carbon.Parse("2020-08-05 13:14:15")) // true
489+
490+
// 是否在两个时间之间(不包括这两个时间)
491+
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
492+
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
493+
494+
// 是否在两个时间之间(包括开始时间)
495+
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedStartTime(carbon.Parse("2020-08-05 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
496+
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedStartTime(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
497+
498+
// 是否在两个时间之间(包括结束时间)
499+
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedEndTime(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-05 13:14:15")) // true
500+
carbon.Parse("2020-08-05 13:14:15").BetweenIncludedEndTime(carbon.Parse("2020-08-04 13:14:15"), carbon.Parse("2020-08-06 13:14:15")) // true
501+
502+
// 是否在两个时间之间(包括这两个时间)
503+
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
504+
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
505+
541506
```
542507

543508
##### 时间输出
@@ -606,6 +571,42 @@ carbon.Parse("2020-08-05 13:14:15").Format("l jS \\o\\f F Y h:i:s A") // Wednesd
606571
```
607572
>更多格式化输出符号请查看附录 <a href="#格式化符号表">格式化符号表</a>
608573
574+
##### 时间设置
575+
```go
576+
// 设置时区
577+
carbon.SetTimezone(carbon.PRC).Now().ToDateTimeString() // 2020-08-05 13:14:15
578+
carbon.SetTimezone(carbon.Tokyo).Now().ToDateTimeString() // 2020-08-05 14:14:15
579+
carbon.SetTimezone(carbon.Tokyo).SetTimezone(carbon.PRC).Now().ToDateTimeString() // 2020-08-05 13:14:15
580+
581+
// 设置语言
582+
carbon.Parse("2020-07-05 13:14:15").SetLocale("en").DiffForHumans()) // 1 month ago
583+
carbon.Parse("2020-07-05 13:14:15").SetLocale("zh-CN").DiffForHumans()) // 1 月前
584+
585+
// 设置年
586+
carbon.Parse("2019-08-05").SetYear(2020).ToDateString() // 2020-08-05
587+
carbon.Parse("2020-02-29").SetYear(2019).ToDateString() // 2019-03-01
588+
589+
// 设置月
590+
carbon.Parse("2020-01-31").SetMonth(2).ToDateString() // 2020-03-02
591+
carbon.Parse("2020-08-05").SetMonth(2).ToDateString() // 2020-02-05
592+
593+
// 设置日
594+
carbon.Parse("2019-08-05").SetDay(31).ToDateString() // 2020-08-31
595+
carbon.Parse("2020-02-01").SetDay(31).ToDateString() // 2020-03-02
596+
597+
// 设置时
598+
carbon.Parse("2020-08-05 13:14:15").SetHour(10).ToDateTimeString() // 2020-08-05 10:14:15
599+
carbon.Parse("2020-08-05 13:14:15").SetHour(24).ToDateTimeString() // 2020-08-06 00:14:15
600+
601+
// 设置分
602+
carbon.Parse("2020-08-05 13:14:15").SetMinute(10).ToDateTimeString() // 2020-08-05 13:10:15
603+
carbon.Parse("2020-08-05 13:14:15").SetMinute(60).ToDateTimeString() // 2020-08-05 14:00:15
604+
605+
// 设置秒
606+
carbon.Parse("2020-08-05 13:14:15").SetSecond(10).ToDateTimeString() // 2020-08-05 13:14:10
607+
carbon.Parse("2020-08-05 13:14:15").SetSecond(60).ToDateTimeString() // 2020-08-05 13:15:00
608+
```
609+
609610
##### 时间获取
610611
```go
611612
// 获取本年总天数
@@ -665,6 +666,76 @@ carbon.Parse("2002-12-31 13:14:15").Age() // 18
665666
```
666667
> 关于第几周的计算如有疑惑请查看 [ISO8601标准](https://baike.baidu.com/item/ISO%208601/3910715)
667668
669+
##### 多语言支持
670+
###### 设置区域
671+
```go
672+
// 方式一(推荐)
673+
c := carbon.Now().AddHours(1).SetLocale("zh-CN")
674+
if c.Error != nil {
675+
// 错误处理
676+
fmt.Println(c.Error)
677+
}
678+
c.DiffForHumans() // 1 小时后
679+
680+
// 方式二
681+
lang := NewLanguage()
682+
if err := lang.SetLocale("zh-CN");err != nil {
683+
// 错误处理
684+
fmt.Println(err)
685+
}
686+
carbon.Now().AddHours(1).SetLanguage(lang).DiffForHumans() // 1 小时后
687+
```
688+
###### 设置目录
689+
```go
690+
lang := NewLanguage()
691+
if err := lang.SetDir("lang");err != nil {
692+
// 错误处理
693+
fmt.Println(err)
694+
}
695+
carbon.Now().AddHours(1).SetLanguage(lang).DiffForHumans() // 1 小时后
696+
```
697+
698+
###### 部分自定义翻译(其余仍然按照指定的locale翻译)
699+
```go
700+
lang := NewLanguage()
701+
702+
if err := lang.SetLocale("en");err != nil {
703+
// 错误处理
704+
fmt.Println(err)
705+
}
706+
707+
resources := map[string]string{
708+
"hour":"%dh",
709+
}
710+
lang.SetResources(resources)
711+
712+
carbon.Now().AddYears(1).SetLanguage(lang).DiffForHumans() // 1 year from now
713+
carbon.Now().AddHours(1).SetLanguage(lang).DiffForHumans() // 1h from now
714+
```
715+
716+
###### 完全自定义翻译
717+
```go
718+
lang := NewLanguage()
719+
resources := map[string]string{
720+
"year":"1 yr|%d yrs",
721+
"month":"1 mo|%d mos",
722+
"week":"%dw",
723+
"day":"%dd",
724+
"hour":"%dh",
725+
"minute":"%dm",
726+
"second":"%ds",
727+
"now": "just now",
728+
"ago":"%s ago",
729+
"from_now":"in %s",
730+
"before":"%s before",
731+
"after":"%s after",
732+
}
733+
lang.SetResources(resources)
734+
735+
carbon.Now().AddYears(1).SetLanguage(lang).DiffForHumans() // in 1 yr
736+
carbon.Now().AddHours(1).SetLanguage(lang).DiffForHumans() // in 1h
737+
```
738+
668739
##### 农历支持
669740
```go
670741
// 获取生肖年
@@ -833,7 +904,7 @@ fmt.Println(c.ToDateTimeString())
833904
// 输出
834905
invalid timezone "XXXX", please see the $GOROOT/lib/time/zoneinfo.zip file for all valid timezone
835906
```
836-
> 建议使用SetTimezone()、Parse()、ParseByFormat()、AddDuration()、SubDuration()等方法时先进行错误处理判断,除非你能确保传入参数无误
907+
> 建议使用SetTimezone()、Parse()、ParseByFormat()、AddDuration()、SubDuration()、SetLocale()等方法时先进行错误处理判断,除非你能确保传入参数无误
837908
#### 附录
838909
##### <a id="格式化符号表">格式化符号表</a>
839910
| 符号 | 描述 | 长度 | 范围 | 示例 |

0 commit comments

Comments
 (0)