From dc91c96305eaef38e55ff6715597de2f62565a78 Mon Sep 17 00:00:00 2001 From: Yurii Soldak Date: Sat, 21 Jan 2023 12:02:56 +0100 Subject: [PATCH] example: adjust time offset --- Makefile | 2 ++ src/examples/time-offset/time-offset.go | 32 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/examples/time-offset/time-offset.go diff --git a/Makefile b/Makefile index 0ccd6bae..792cc53c 100644 --- a/Makefile +++ b/Makefile @@ -478,6 +478,8 @@ smoketest: @$(MD5SUM) test.hex $(TINYGO) build -size short -o test.hex -target=pca10040 examples/test @$(MD5SUM) test.hex + $(TINYGO) build -size short -o test.hex -target=pca10040 examples/time-offset + @$(MD5SUM) test.hex $(TINYGO) build -size short -o test.hex -target=wioterminal examples/hid-mouse @$(MD5SUM) test.hex $(TINYGO) build -size short -o test.hex -target=wioterminal examples/hid-keyboard diff --git a/src/examples/time-offset/time-offset.go b/src/examples/time-offset/time-offset.go new file mode 100644 index 00000000..ef84997f --- /dev/null +++ b/src/examples/time-offset/time-offset.go @@ -0,0 +1,32 @@ +package main + +// This example demonstrates how to set the system time. +// +// Usually, boards don't keep time on power cycles and restarts, it resets to Unix epoch. +// The system time can be set by calling runtime.AdjustTimeOffset(). +// +// Possible time sources: an external RTC clock or network (WiFi access point or NTP server) + +import ( + "fmt" + "runtime" + "time" +) + +const myTime = "2006-01-02T15:04:05Z" // this is an example time you source somewhere + +func main() { + + // measure how many nanoseconds the internal clock is behind + timeOfMeasurement := time.Now() + actualTime, _ := time.Parse(time.RFC3339, myTime) + offset := actualTime.Sub(timeOfMeasurement) + + // adjust internal clock by adding the offset to the internal clock + runtime.AdjustTimeOffset(int64(offset)) + + for { + fmt.Printf("%v\r\n", time.Now().Format(time.RFC3339)) + time.Sleep(5 * time.Second) + } +}