mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-11 08:12:26 +08:00
doc: add doc for AddDaySafe, AddMonthSafe, AddYearSafe
This commit is contained in:
@@ -1,51 +1,51 @@
|
|||||||
-----BEGIN rsa private key-----
|
-----BEGIN rsa private key-----
|
||||||
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
|
||||||
-----END rsa private key-----
|
-----END rsa private key-----
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
-----BEGIN rsa public key-----
|
-----BEGIN rsa public key-----
|
||||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAydCMlSbzx3yb6o3T/CUp
|
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkyNIU0a9CCzY+Mf6/jwT
|
||||||
fxRHSl45LjyqhEQiMHkGPcL9d81NlxVHvvy/V/mY5wtarYRlifsk2OOVJ2LyfagX
|
eoxhY5NGGQ+/1pYcJk+8aZXvFcRoewwjs5NQ2Oyfc4cCGpU7EVfh3LrEZxuMIx3g
|
||||||
KM5k16LEEq2PsPcKVM4Vp6gLCIB2aX88hfJkYfTRGW2RX9aVCJaK1Ak2nXInuNEG
|
ZyY6On0EH6tBjZaxpaAkjcMpkAAIwSOak8TeqIxjVQc5R0up3QVQudhGgdGwQS6P
|
||||||
9T/ykelH57gHjH2k9NuDBifcIm3fIKNKYqK4WvDQMob8KyKJdiKPsKll4Z5ZKGt/
|
sRmgJ42sKMCCWxCUOPZyIJkxex1HCPXVxOjDiNsd+EdswaXvCNxN0lpPosoEE4p0
|
||||||
gqpMt0gWx1fZ/njUnGATUoXMH7/JXdPQH+VVYt5HFq8JqffkiiIW0zzdNmA0dSGx
|
ObxQqFRb/PEDBchm7FHMKm7yLa1YpALM2PsTCr1RJZ3OixaX3TpbxVWm4i5VVXF7
|
||||||
c96i8dCNdIB79iQAJ/X0c5fk5/8b/fkLUHY/BvBMhFtLp7/TCnbzn5Rmp8IJtWKe
|
C3Xp1onEn2jz5D8p0vUMUFUKRcX7UHr73mBAtNQ+8yyi7NWZwbay0s7bKVO0gFcc
|
||||||
xaQ00AqzRNGnd4LoJAiPWAipfsUeYXW517lBllKz9wiKo7AmkB0h8fig5ZEK5btS
|
P/O9cSCW7g55qVh5x9T+pGJuK43U0VDKJhx3w2llHJpG14O/lOdBSpDZD+lRQq8i
|
||||||
BqNRgdnMjBxrm/QFgWdqsxmzcjrXD3iV+ZNOE8s47jkdhjoPRpqqyMSUawmJs1uy
|
/SemiCVNc4uz9wXBeQXxe6XNfW69wIfyRrIHObOY16UUwtTz8grxibiPiNxxAbwx
|
||||||
SrVpgaldIJrBzNOATReHFQ+mSlHi7D1BcrOegCHasIqaQKv+w9ttR1P6bFcVezO/
|
1cKij2thEr2kyF6YRNpQnAuwDM8wX0UXQDY3uZHoiFQBGW15Eprtb+6iRmlY47Z2
|
||||||
OQaTbdQviB+pHqYv7Ww9kVPko1c+X5SMUUXy0MwwjLRl2TcEA0BzUf3Qdq5TA7x2
|
n+LX27evoDoNuvTdlOpY5A+qDm3NjAsw18JCDMfqxpLOwQS1CAInLRRegw+pcL5J
|
||||||
Q4Eak2oBsuuEZrCPSTDRXjwUxd+Cz82SZMKg6fDe409dPR0S8w1xp4gdknvoQIyN
|
NGl1th4sTXdZPVz/z0KVETbNbysrjHYPUiYnyiWe6EFkWgUQfiQJGulGAwxxav9w
|
||||||
pNrY6I6/UyDieOAImOLSrMECAwEAAQ==
|
pxWELFoQKx8TZND1jfBLbJkCAwEAAQ==
|
||||||
-----END rsa public key-----
|
-----END rsa public key-----
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ import (
|
|||||||
- [AddHour](#AddHour)
|
- [AddHour](#AddHour)
|
||||||
- [AddMinute](#AddMinute)
|
- [AddMinute](#AddMinute)
|
||||||
- [AddYear](#AddYear)
|
- [AddYear](#AddYear)
|
||||||
|
- [AddDaySafe](#AddDaySafe)
|
||||||
|
- [AddMonthSafe](#AddMonthSafe)
|
||||||
|
- [AddYearSafe](#AddYearSafe)
|
||||||
- [BeginOfMinute](#BeginOfMinute)
|
- [BeginOfMinute](#BeginOfMinute)
|
||||||
- [BeginOfHour](#BeginOfHour)
|
- [BeginOfHour](#BeginOfHour)
|
||||||
- [BeginOfDay](#BeginOfDay)
|
- [BeginOfDay](#BeginOfDay)
|
||||||
@@ -320,6 +323,126 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="AddDaySafe">AddDaySafe</span>
|
||||||
|
|
||||||
|
<p>增加/减少指定的天数,并确保日期是有效日期。</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func AddDaySafe(t time.Time, days int) time.Time
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:<span style="float:right;display:inline-block;">[运行](todo)</span></b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
"github.com/duke-git/lancet/v2/datetime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
leapYearDate1, _ := time.Parse("2006-01-02", "2024-02-29")
|
||||||
|
result1 := datetime.AddDaySafe(leapYearDate1, 1)
|
||||||
|
|
||||||
|
leapYearDate2, _ := time.Parse("2006-01-02", "2024-03-01")
|
||||||
|
result2 := datetime.AddDaySafe(leapYearDate2, -1)
|
||||||
|
|
||||||
|
nonLeapYearDate1, _ := time.Parse("2006-01-02", "2025-02-28")
|
||||||
|
result3 := datetime.AddDaySafe(nonLeapYearDate1, 1)
|
||||||
|
|
||||||
|
nonLeaYearDate2, _ := time.Parse("2006-01-02", "2025-03-01")
|
||||||
|
result4 := datetime.AddDaySafe(nonLeaYearDate2, -1)
|
||||||
|
|
||||||
|
fmt.Println(result1.Format("2006-01-02"))
|
||||||
|
fmt.Println(result2.Format("2006-01-02"))
|
||||||
|
fmt.Println(result3.Format("2006-01-02"))
|
||||||
|
fmt.Println(result4.Format("2006-01-02"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 2024-03-01
|
||||||
|
// 2024-02-29
|
||||||
|
// 2025-03-01
|
||||||
|
// 2025-02-28
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="AddMonthSafe">AddMonthSafe</span>
|
||||||
|
|
||||||
|
<p>增加/减少指定的月份,并确保日期是有效日期。</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func AddMonthSafe(t time.Time, months int) time.Time
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:<span style="float:right;display:inline-block;">[运行](todo)</span></b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
"github.com/duke-git/lancet/v2/datetime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
date1, _ := time.Parse("2006-01-02", "2025-01-31")
|
||||||
|
result1 := datetime.AddMonthSafe(date1, 1)
|
||||||
|
|
||||||
|
date2, _ := time.Parse("2006-01-02", "2024-02-29")
|
||||||
|
result2 := datetime.AddMonthSafe(date2, -1)
|
||||||
|
|
||||||
|
fmt.Println(result1.Format("2006-01-02"))
|
||||||
|
fmt.Println(result2.Format("2006-01-02"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 2025-02-28
|
||||||
|
// 2024-01-29
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="AddYearSafe">AddYearSafe</span>
|
||||||
|
|
||||||
|
<p>增加/减少指定的年份,并确保日期是有效日期。</p>
|
||||||
|
|
||||||
|
<b>函数签名:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func AddYearSafe(t time.Time, years int) time.Time
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>示例:<span style="float:right;display:inline-block;">[运行](todo)</span></b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
"github.com/duke-git/lancet/v2/datetime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
date, _ := time.Parse("2006-01-02", "2020-02-29")
|
||||||
|
|
||||||
|
result1 := datetime.AddYearSafe(date, 1)
|
||||||
|
result2 := datetime.AddYearSafe(date, -1)
|
||||||
|
|
||||||
|
fmt.Println(result1.Format("2006-01-02"))
|
||||||
|
fmt.Println(result2.Format("2006-01-02"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 2021-02-28
|
||||||
|
// 2019-02-28
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### <span id="BeginOfMinute">BeginOfMinute</span>
|
### <span id="BeginOfMinute">BeginOfMinute</span>
|
||||||
|
|
||||||
<p>返回指定时间的分钟开始时间。</p>
|
<p>返回指定时间的分钟开始时间。</p>
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ import (
|
|||||||
- [AddHour](#AddHour)
|
- [AddHour](#AddHour)
|
||||||
- [AddMinute](#AddMinute)
|
- [AddMinute](#AddMinute)
|
||||||
- [AddYear](#AddYear)
|
- [AddYear](#AddYear)
|
||||||
|
- [AddDaySafe](#AddDaySafe)
|
||||||
|
- [AddMonthSafe](#AddMonthSafe)
|
||||||
|
- [AddYearSafe](#AddYearSafe)
|
||||||
- [BeginOfMinute](#BeginOfMinute)
|
- [BeginOfMinute](#BeginOfMinute)
|
||||||
- [BeginOfHour](#BeginOfHour)
|
- [BeginOfHour](#BeginOfHour)
|
||||||
- [BeginOfDay](#BeginOfDay)
|
- [BeginOfDay](#BeginOfDay)
|
||||||
@@ -322,6 +325,126 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### <span id="AddDaySafe">AddDaySafe</span>
|
||||||
|
|
||||||
|
<p>Add or sub days to the time and ensure that the returned date does not exceed the valid date of the target year and month.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func AddDaySafe(t time.Time, days int) time.Time
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:<span style="float:right;display:inline-block;">[Run](todo)</span></b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
"github.com/duke-git/lancet/v2/datetime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
leapYearDate1, _ := time.Parse("2006-01-02", "2024-02-29")
|
||||||
|
result1 := datetime.AddDaySafe(leapYearDate1, 1)
|
||||||
|
|
||||||
|
leapYearDate2, _ := time.Parse("2006-01-02", "2024-03-01")
|
||||||
|
result2 := datetime.AddDaySafe(leapYearDate2, -1)
|
||||||
|
|
||||||
|
nonLeapYearDate1, _ := time.Parse("2006-01-02", "2025-02-28")
|
||||||
|
result3 := datetime.AddDaySafe(nonLeapYearDate1, 1)
|
||||||
|
|
||||||
|
nonLeaYearDate2, _ := time.Parse("2006-01-02", "2025-03-01")
|
||||||
|
result4 := datetime.AddDaySafe(nonLeaYearDate2, -1)
|
||||||
|
|
||||||
|
fmt.Println(result1.Format("2006-01-02"))
|
||||||
|
fmt.Println(result2.Format("2006-01-02"))
|
||||||
|
fmt.Println(result3.Format("2006-01-02"))
|
||||||
|
fmt.Println(result4.Format("2006-01-02"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 2024-03-01
|
||||||
|
// 2024-02-29
|
||||||
|
// 2025-03-01
|
||||||
|
// 2025-02-28
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="AddMonthSafe">AddMonthSafe</span>
|
||||||
|
|
||||||
|
<p>Add or sub months to the time and ensure that the returned date does not exceed the valid date of the target year and month.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func AddMonthSafe(t time.Time, months int) time.Time
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:<span style="float:right;display:inline-block;">[Run](todo)</span></b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
"github.com/duke-git/lancet/v2/datetime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
date1, _ := time.Parse("2006-01-02", "2025-01-31")
|
||||||
|
result1 := datetime.AddMonthSafe(date1, 1)
|
||||||
|
|
||||||
|
date2, _ := time.Parse("2006-01-02", "2024-02-29")
|
||||||
|
result2 := datetime.AddMonthSafe(date2, -1)
|
||||||
|
|
||||||
|
fmt.Println(result1.Format("2006-01-02"))
|
||||||
|
fmt.Println(result2.Format("2006-01-02"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 2025-02-28
|
||||||
|
// 2024-01-29
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### <span id="AddYearSafe">AddYearSafe</span>
|
||||||
|
|
||||||
|
<p>Add or sub years to the time and ensure that the returned date does not exceed the valid date of the target year and month.</p>
|
||||||
|
|
||||||
|
<b>Signature:</b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
func AddYearSafe(t time.Time, years int) time.Time
|
||||||
|
```
|
||||||
|
|
||||||
|
<b>Example:<span style="float:right;display:inline-block;">[Run](todo)</span></b>
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
"github.com/duke-git/lancet/v2/datetime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
date, _ := time.Parse("2006-01-02", "2020-02-29")
|
||||||
|
|
||||||
|
result1 := datetime.AddYearSafe(date, 1)
|
||||||
|
result2 := datetime.AddYearSafe(date, -1)
|
||||||
|
|
||||||
|
fmt.Println(result1.Format("2006-01-02"))
|
||||||
|
fmt.Println(result2.Format("2006-01-02"))
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// 2021-02-28
|
||||||
|
// 2019-02-28
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### <span id="BeginOfMinute">BeginOfMinute</span>
|
### <span id="BeginOfMinute">BeginOfMinute</span>
|
||||||
|
|
||||||
<p>Return beginning minute time of day.</p>
|
<p>Return beginning minute time of day.</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user