Skip to content

Commit 5d6cc4e

Browse files
committed
Merge branch 'develop'
# Conflicts: # README.md # calendar.go # calendar/lunar/lunar.go # calendar_unit_test.go
2 parents dd4b00c + 3cd7800 commit 5d6cc4e

19 files changed

+835
-863
lines changed

README.cn.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1360,7 +1360,8 @@ fmt.Printf("%d", person.Field8) // 1596604455999999999
13601360

13611361
目前支持的日历有
13621362

1363-
* [中国农历](./calendar/lunar/README.cn.md "中国农历"): 由 [gouguoyin](https://github.com/gouguoyin "gouguoyin") 贡献
1363+
* [中国农历](./calendar/lunar/README.cn.md "中国农历")
1364+
* [儒略日/简化儒略日](./calendar/julian/README.cn.md "儒略日/简化儒略日")
13641365

13651366
##### 国际化
13661367

README.jp.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1360,7 +1360,8 @@ fmt.Printf("%d", person.Field8) // 1596604455999999999
13601360

13611361
現在サポートされているカレンダーは
13621362

1363-
* [中国の旧暦](./calendar/lunar/README.jp.md "中国の旧暦"): [gouguoyin](https://github.com/gouguoyin "gouguoyin") による貢献
1363+
* [中国の旧暦](./calendar/lunar/README.jp.md "中国の旧暦")
1364+
* [儒略の日/簡略化儒略の日](./calendar/julian/README.jp.md "儒略日/简化儒略日")
13641365

13651366
##### 国際化
13661367

README.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -1355,10 +1355,9 @@ fmt.Printf("%d", person.Field8) // 1596604455999999999
13551355

13561356
The following calendars are supported
13571357

1358-
* [Chinese Lunar](./calendar/lunar/README.md "Chinese Lunar"):contributed
1359-
by [gouguoyin](https://github.com/gouguoyin "gouguoyin")
1360-
* [Vietnamese Lunar](./calendar/vlunar/README.md "Vietnamese Lunar"):contributed
1361-
by [culy247](https://github.com/culy247 "culy247")
1358+
* [Chinese Lunar](./calendar/lunar/README.md "Chinese Lunar")
1359+
* [Julian Day/Modified Julian Day](./calendar/julian/README.md "JD/MJD")
1360+
13621361
##### I18n
13631362

13641363
The following languages are supported

calendar.go

+11-12
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package carbon
22

33
import (
4+
"github.com/golang-module/carbon/v2/calendar/julian"
45
"github.com/golang-module/carbon/v2/calendar/lunar"
5-
"github.com/golang-module/carbon/v2/calendar/vlunar"
66
)
77

88
// Lunar converts gregorian calendar to lunar calendar.
9-
// 将 公历 转为 农历
9+
// 将 公历 转化为 农历
1010
func (c Carbon) Lunar() (l lunar.Lunar) {
1111
if c.Error != nil {
1212
l.Error = c.Error
@@ -23,20 +23,19 @@ func CreateFromLunar(year, month, day, hour, minute, second int, isLeapMonth boo
2323
return c
2424
}
2525

26-
// Lunar converts the solar calendar to the lunar calendar.
27-
// 将公历转为农历
28-
func (c Carbon) VLunar() (l vlunar.Lunar) {
26+
// Julian converts gregorian calendar to Julian calendar
27+
// 将 公历 转化为 儒略历
28+
func (c Carbon) Julian() (j julian.Julian) {
2929
if c.Error != nil {
30-
l.Error = c.Error
31-
return l
30+
return j
3231
}
33-
return vlunar.NewGregorian(c.ToStdTime()).ToLunar()
32+
return julian.NewGregorian(c.ToStdTime()).ToJulian()
3433
}
3534

36-
// CreateFromLunar creates a Carbon instance from Lunar date and time.
37-
// 从 农历日期 创建 Carbon 实例
38-
func CreateFromVLunar(year, month, day, hour, minute, second int, isLeapMonth bool) Carbon {
35+
// CreateFromJulian creates a Carbon instance from Julian Day.or Modified Julian Day
36+
// 从 儒略日/简化儒略日 创建 Carbon 实例
37+
func CreateFromJulian(f float64) Carbon {
3938
c := NewCarbon()
40-
c.time = vlunar.NewLunar(year, month, day, hour, minute, second, isLeapMonth).ToGregorian().Time
39+
c.time = julian.NewJulian(f).ToGregorian().Time
4140
return c
4241
}

calendar/gregorian.go

+35
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ func NewGregorian(t time.Time) (g Gregorian) {
128128
return g
129129
}
130130

131+
// Date gets gregorian year, month, and day like 2020, 8, 5.
132+
// 获取公历年、月、日
131133
func (g Gregorian) Date() (year, month, day int) {
132134
if g.IsZero() {
133135
return 0, 0, 0
@@ -138,66 +140,99 @@ func (g Gregorian) Date() (year, month, day int) {
138140
return
139141
}
140142

143+
// Clock gets gregorian hour, minute, and second like 13, 14, 15.
144+
// 获取公历时、分、秒
141145
func (g Gregorian) Clock() (hour, minute, second int) {
142146
if g.IsZero() {
143147
return 0, 0, 0
144148
}
145149
return g.Time.Clock()
146150
}
147151

152+
// Year gets gregorian year like 2020.
153+
// 获取公历年
148154
func (g Gregorian) Year() int {
149155
if g.IsZero() {
150156
return 0
151157
}
152158
return g.Time.Year()
153159
}
154160

161+
// Month gets gregorian month like 8.
162+
// 获取公历月
155163
func (g Gregorian) Month() int {
156164
if g.IsZero() {
157165
return 0
158166
}
159167
return int(g.Time.Month())
160168
}
161169

170+
// Day gets gregorian day like 5.
171+
// 获取公历日
162172
func (g Gregorian) Day() int {
163173
if g.IsZero() {
164174
return 0
165175
}
166176
return g.Time.Day()
167177
}
168178

179+
// Hour gets gregorian hour like 13.
180+
// 获取公历小时
169181
func (g Gregorian) Hour() int {
170182
if g.IsZero() {
171183
return 0
172184
}
173185
return g.Time.Hour()
174186
}
175187

188+
// Minute gets gregorian minute like 14.
189+
// 获取公历分钟数
176190
func (g Gregorian) Minute() int {
177191
if g.IsZero() {
178192
return 0
179193
}
180194
return g.Time.Minute()
181195
}
182196

197+
// Second gets gregorian second like 15.
198+
// 获取公历秒数
183199
func (g Gregorian) Second() int {
184200
if g.IsZero() {
185201
return 0
186202
}
187203
return g.Time.Second()
188204
}
189205

206+
// Location gets gregorian timezone information.
207+
// 获取时区信息
190208
func (g Gregorian) Location() *time.Location {
191209
return g.Time.Location()
192210
}
193211

212+
// String implements the interface Stringer for Gregorian struct.
213+
// 实现 Stringer 接口
194214
func (g Gregorian) String() string {
195215
if g.IsZero() {
196216
return ""
197217
}
198218
return g.Time.Format(DateTimeLayout)
199219
}
200220

221+
// IsZero reports whether is zero time.
222+
// 是否是零值时间
201223
func (g Gregorian) IsZero() bool {
202224
return g.Time.IsZero()
203225
}
226+
227+
// IsLeapYear reports whether is a leap year.
228+
// 是否是闰年
229+
func (g Gregorian) IsLeapYear() bool {
230+
if g.IsZero() {
231+
return false
232+
}
233+
year := g.Year()
234+
if year%400 == 0 || (year%4 == 0 && year%100 != 0) {
235+
return true
236+
}
237+
return false
238+
}

0 commit comments

Comments
 (0)