https://github.com/berkaroad/clock
提供时钟接口,并提供设置全局时钟和获取全局时钟的当前时间。
https://github.com/berkaroad/clock
clock now ntp time
Last synced: about 1 year ago
JSON representation
提供时钟接口,并提供设置全局时钟和获取全局时钟的当前时间。
- Host: GitHub
- URL: https://github.com/berkaroad/clock
- Owner: berkaroad
- License: mit
- Created: 2022-06-15T14:08:22.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-20T10:03:16.000Z (almost 4 years ago)
- Last Synced: 2024-06-21T03:14:19.466Z (almost 2 years ago)
- Topics: clock, now, ntp, time
- Language: Go
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# clock
提供时钟接口,并提供设置全局时钟和获取全局时钟的当前时间。
- 提供基于系统时间的时钟(SystemClock)
- 提供基于NTP服务的时钟(NTPClock)
- 提供只能前进滚动的时钟(ForwardOnlyClock),即该时钟只允许往大调(递增),不能往小调(递减)
- 可设置全局时钟(只能设置一次,防止运行期间被修改)
## 用法
- 基于系统时钟(SystemClock)的只能前进滚动的时钟(ForwardOnlyClock)
```go
package main
import (
"fmt"
"time"
"github.com/berkaroad/clock"
)
func main() {
var startTs int64 = 1655431380 // 2022-06-17 10:03:00
// 将系统时钟作为参照物
var refClock clock.Clock = clock.NewSystemClock()
// 设置 ForwardOnlyClock 为全局时钟
clock.SetGlobal(clock.NewForwardOnlyClock(startTs, refClock))
for i := 0; i < 10; i++ {
<-time.After(time.Second)
// 打印系统时钟、全局时钟
fmt.Printf("system clock: %v, global clock: %v\n", refClock.Now(), clock.Now())
}
}
```
- 基于NTP时钟(NTPClock)的只能前进滚动的时钟(ForwardOnlyClock)
```go
package main
import (
"fmt"
"time"
"github.com/berkaroad/clock"
)
func main() {
var startTs int64 = 1655431380 // 2022-06-17 10:03:00
// 将NTP时钟作为参照物
var refClock clock.Clock = clock.NewNTPClock([]string{"pool.ntp.org"}, ntp.QueryOptions{Timeout: time.Second})
// 设置 ForwardOnlyClock 为全局时钟
clock.SetGlobal(clock.NewForwardOnlyClock(startTs, refClock))
for i := 0; i < 10; i++ {
<-time.After(time.Second)
// 打印ntp时钟、全局时钟
fmt.Printf("ntp clock: %v, global clock: %v\n", refClock.Now(), clock.Now())
}
}
```