@@ -8,54 +8,66 @@ import (
8
8
9
9
// Lunar converts Carbon instance to Lunar instance.
10
10
// 将 Carbon 实例转化为 Lunar 实例
11
- func (c Carbon ) Lunar () (l lunar.Lunar ) {
12
- if c .Error != nil {
11
+ func (c * Carbon ) Lunar () * lunar.Lunar {
12
+ l := new (lunar.Lunar )
13
+ if c .IsNil () {
14
+ return nil
15
+ }
16
+ if c .HasError () {
13
17
l .Error = c .Error
14
- return
18
+ return l
15
19
}
16
20
return lunar .FromGregorian (c .StdTime ()).ToLunar ()
17
21
}
18
22
19
23
// CreateFromLunar creates a Carbon instance from Lunar date and time.
20
24
// 从 农历日期 创建 Carbon 实例
21
- func CreateFromLunar (year , month , day , hour , minute , second int , isLeapMonth bool ) Carbon {
25
+ func CreateFromLunar (year , month , day , hour , minute , second int , isLeapMonth bool ) * Carbon {
26
+ l := lunar .FromLunar (year , month , day , hour , minute , second , isLeapMonth )
27
+ if ! l .IsValid () {
28
+ return nil
29
+ }
22
30
t := lunar .FromLunar (year , month , day , hour , minute , second , isLeapMonth ).ToGregorian ().Time
23
31
return CreateFromStdTime (t )
24
32
}
25
33
26
34
// Julian converts Carbon instance to Julian instance.
27
35
// 将 Carbon 实例转化为 Julian 实例
28
- func (c Carbon ) Julian () (j julian.Julian ) {
29
- if c .Error != nil {
30
- return
36
+ func (c * Carbon ) Julian () * julian.Julian {
37
+ j := new (julian.Julian )
38
+ if c .IsInvalid () {
39
+ return j
31
40
}
32
41
return julian .FromGregorian (c .StdTime ()).ToJulian ()
33
42
}
34
43
35
44
// CreateFromJulian creates a Carbon instance from Julian Day or Modified Julian Day.
36
45
// 从 儒略日/简化儒略日 创建 Carbon 实例
37
- func CreateFromJulian (f float64 ) Carbon {
46
+ func CreateFromJulian (f float64 ) * Carbon {
47
+ g := julian .FromJulian (f ).ToGregorian ()
48
+ if ! g .IsValid () {
49
+ return nil
50
+ }
38
51
t := julian .FromJulian (f ).ToGregorian ().Time
39
52
return CreateFromStdTime (t )
40
53
}
41
54
42
55
// Persian converts Carbon instance to Persian instance.
43
56
// 将 Carbon 实例转化为 Persian 实例
44
- func (c Carbon ) Persian () (p persian.Persian ) {
45
- if c .Error != nil {
46
- return
57
+ func (c * Carbon ) Persian () * persian.Persian {
58
+ p := new (persian.Persian )
59
+ if c .IsInvalid () {
60
+ return p
47
61
}
48
62
return persian .FromGregorian (c .StdTime ()).ToPersian ()
49
63
}
50
64
51
65
// CreateFromPersian creates a Carbon instance from Persian date and time.
52
66
// 从 波斯日期 创建 Carbon 实例
53
- func CreateFromPersian (year , month , day , hour , minute , second int ) ( c Carbon ) {
67
+ func CreateFromPersian (year , month , day , hour , minute , second int ) * Carbon {
54
68
p := persian .FromPersian (year , month , day , hour , minute , second )
55
- if p .Error != nil {
56
- c .Error = p .Error
57
- return
69
+ if p == nil || p .Error != nil {
70
+ return nil
58
71
}
59
- t := p .ToGregorian ().Time
60
- return CreateFromStdTime (t )
72
+ return CreateFromStdTime (p .ToGregorian ().Time )
61
73
}
0 commit comments