From 0bd9dea37e3d8cccdb5f7ba5a402f62553d07e05 Mon Sep 17 00:00:00 2001 From: AurelienFT <32803821+AurelienFT@users.noreply.github.com> Date: Wed, 23 Oct 2024 20:45:30 +0200 Subject: [PATCH] tai64: fix TAI offset and verify with GH Action (#1583) --- .../workflows/tai64_update_leap_seconds.yml | 28 +++++++++++++++++++ tai64/src/lib.rs | 6 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/tai64_update_leap_seconds.yml diff --git a/.github/workflows/tai64_update_leap_seconds.yml b/.github/workflows/tai64_update_leap_seconds.yml new file mode 100644 index 000000000..df0be3a87 --- /dev/null +++ b/.github/workflows/tai64_update_leap_seconds.yml @@ -0,0 +1,28 @@ +name: Update Leap Seconds +on: + schedule: + - cron: 0 0 * * 1 + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Update leap seconds in code + run: | + curl -o leap_seconds_list -L https://data.iana.org/time-zones/data/leap-seconds.list + number=$(grep -v '^#' leap_seconds_list | tail -n1 | awk '{print $2}') + sed -i "s/\(1970-01-01 00:00:\)[0-9]\+ TAI/\1${number} TAI/" tai64/src/lib.rs + sed -i -E 's/(Self\()[0-9]+ \+ \(1 << 62\)\)/\1'"${number}"' + (1 << 62))/' tai64/src/lib.rs + rm leap_seconds_list + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7 + with: + commit-message: update leap seconds in tai64 + title: Update leap seconds in tai64 + body: 'Following this source: https://data.iana.org/time-zones/data/leap-seconds.list, the leap seconds counter has been updated.' + branch: update-leap-seconds + base: master + delete-branch: true diff --git a/tai64/src/lib.rs b/tai64/src/lib.rs index d7f92d584..2ffcfc618 100644 --- a/tai64/src/lib.rs +++ b/tai64/src/lib.rs @@ -36,8 +36,8 @@ const NANOS_PER_SECOND: u32 = 1_000_000_000; pub struct Tai64(pub u64); impl Tai64 { - /// Unix epoch in `TAI64`: 1970-01-01 00:00:10 TAI. - pub const UNIX_EPOCH: Self = Self(10 + (1 << 62)); + /// Unix epoch in `TAI64`: 1970-01-01 00:00:37 TAI. + pub const UNIX_EPOCH: Self = Self(37 + (1 << 62)); /// Length of serialized `TAI64` timestamp in bytes. pub const BYTE_SIZE: usize = 8; @@ -151,7 +151,7 @@ impl Zeroize for Tai64N { } impl Tai64N { - /// Unix epoch in `TAI64N`: 1970-01-01 00:00:10 TAI. + /// Unix epoch in `TAI64N`: 1970-01-01 00:00:37 TAI. pub const UNIX_EPOCH: Self = Self(Tai64::UNIX_EPOCH, 0); /// Length of serialized `TAI64N` timestamp.