https://github.com/tidwall/rtime
Retrieve the current time from remote servers
https://github.com/tidwall/rtime
Last synced: 4 months ago
JSON representation
Retrieve the current time from remote servers
- Host: GitHub
- URL: https://github.com/tidwall/rtime
- Owner: tidwall
- License: mit
- Created: 2020-03-29T17:51:38.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2020-12-15T13:46:32.000Z (about 5 years ago)
- Last Synced: 2025-04-05T03:12:19.243Z (9 months ago)
- Language: Go
- Size: 10.7 KB
- Stars: 21
- Watchers: 2
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rtime
[](https://godoc.org/github.com/tidwall/rtime)
Retrieve the current time from remote servers.
It works by requesting timestamps from twelve very popular hosts over https.
As soon as it gets at least three responses, it takes the two that have the
smallest difference in time. And from those two it picks the one that is
the oldest. Finally it ensures that the time is monotonic.
## Getting
```
go get -u github.com/tidwall/rtime
```
## Using
Get the remote time with `rtime.Now()`.
```go
tm := rtime.Now()
if tm.IsZero() {
panic("internet offline")
}
println(tm.String())
// output: 2020-03-29 10:27:00 -0700 MST
}
```
## Stay in sync
The `rtime.Now()` will be a little slow, usually 200 ms or more, because it
must make a round trip to three or more remote servers to determine the correct
time.
You can make it fast like the built-in `time.Now()` by calling `rtime.Sync()`
once at the start of your application.
```go
if err := rtime.Sync(); err != nil {
panic(err)
}
// All following rtime.Now() calls will now be quick and without the need for
// checking its result.
tm := rtime.Now()
println(tm.String())
```
It's a good idea to call `rtime.Sync()` at the top of the `main()` or `init()`
functions.
## Contact
Josh Baker [@tidwall](http://twitter.com/tidwall)
## License
Source code is available under the MIT [License](/LICENSE).