bend-kit-time Releases (7): 0.3.0.0 0x598ff14fb52f715fcb963bfff69bb21a indexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.3.0.0 0.2.0.0 0x5845f8df039e2692ba739c8deee74189 unindexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.2.0.0 0.1.3.0 0x7381619e10489fde47767026e044d423 unindexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.1.3.0 0.1.2.1 0xe00bbf72c3ff9dc6d7b077524522b3a8 unindexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.1.2.1 0.1.2.0 0x9e6c76712bb8f23601b045e3a229864a unindexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.1.2.0 0.1.1.0 0x7888b0f73f36c6ac233e30ca25f8c108 unindexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.1.1.0 0.1.0.0 0x3bfb4ae4d3b87b90f01bfcd298211455 unindexed https://jend.leeeet.dev/files.txt?path=bend-kit-time@0.1.0.0 Definitions (189, 1 to 100 shown): Time.Duration (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration) # secs + nanos / 10^9 seconds, with nanos below 10^9: -0.5 s is Duration{-1, 500000000}. type Duration is Data: Duration{secs: Int.I64, nanos: U32} Time.Instant (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant) # A Duration since 1970-01-01T00:00:00Z. Days are 86400 s: there are no leap seconds. type Instant is Data: Instant{secs: Int.I64, nanos: U32} Time.Date (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date) # A proleptic Gregorian date. The conversions and formats cover years 0 to 9999. type Date is Data: Date{year: U32, month: U32, day: U32} Time.DateTime (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime) type DateTime is Data: DateTime{date: Date, hour: U32, min: U32, sec: U32, nanos: U32} Time.i64 (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=i64) def i64(x: U32) -> Int.I64: Time.i64s (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=i64s) # The signed 32-bit value of x, widened. def i64s(x: U32) -> Int.I64: Time.i64.of (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=i64.of) # hi * 2^32 + lo, as the bits of an I64. def i64.of(hi: U32, lo: U32) -> Int.I64: Time.Duration.zero (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.zero) def Duration.zero() -> Duration: Time.Duration.of_secs (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.of_secs) def Duration.of_secs(s: Int.I64) -> Duration: Time.Duration.of_ms (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.of_ms) def Duration.of_ms(+ms: U32) -> Duration: Time.Duration.to_ms (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.to_ms) # Whole milliseconds, rounded down. def Duration.to_ms(d: Duration) -> Int.I64: Time.Duration.to_nat.of (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.to_nat.of) def Duration.to_nat.of(m: Maybe<&2, Nat>, +per: Nat, +n: U32) -> Nat: Time.Duration.to_ms_nat (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.to_ms_nat) # Whole milliseconds, rounded down; 0 when d is negative. def Duration.to_ms_nat(d: Duration) -> Nat: Time.Duration.to_us_nat (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.to_us_nat) # Whole microseconds, rounded down; 0 when d is negative. def Duration.to_us_nat(d: Duration) -> Nat: Time.Duration.carry (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.carry) def Duration.carry(c: Bool, s: Int.I64, +n: U32) -> Duration: Time.Duration.add (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.add) def Duration.add(a: Duration, b: Duration) -> Duration: Time.Duration.borrow (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.borrow) # n is na - nb, wrapped when na < nb. def Duration.borrow(c: Bool, s: Int.I64, +n: U32) -> Duration: Time.Duration.sub (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.sub) def Duration.sub(a: Duration, b: Duration) -> Duration: Time.Duration.neg (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.neg) def Duration.neg(d: Duration) -> Duration: Time.Duration.cmp.then (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.cmp.then) def Duration.cmp.then(c: Cmp, +na: U32, +nb: U32) -> Cmp: Time.Duration.cmp (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.cmp) def Duration.cmp(a: Duration, b: Duration) -> Cmp: Time.Instant.epoch (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.epoch) def Instant.epoch() -> Instant: Time.Instant.of_unix (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.of_unix) def Instant.of_unix(s: Int.I64) -> Instant: Time.Instant.of (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.of) def Instant.of(d: Duration) -> Instant: Time.Instant.since_epoch (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.since_epoch) def Instant.since_epoch(i: Instant) -> Duration: Time.Instant.add (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.add) def Instant.add(i: Instant, d: Duration) -> Instant: Time.Instant.since (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.since) # a - b. def Instant.since(a: Instant, b: Instant) -> Duration: Time.Instant.cmp (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Instant.cmp) def Instant.cmp(a: Instant, b: Instant) -> Cmp: Time.mono.raw (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=mono.raw) # (secs hi, secs lo, nanos) of CLOCK_MONOTONIC, from an unspecified start. def mono.raw() -> IO(U32 & U32 & U32): Time.wall.raw (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=wall.raw) # (secs hi, secs lo, nanos) of CLOCK_REALTIME, since the Unix epoch. def wall.raw() -> IO(U32 & U32 & U32): Time.raw.dur (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=raw.dur) def raw.dur(r: U32 & U32 & U32) -> Duration: Time.mono (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=mono) # Time since an unspecified start that never goes back. Use it to measure spans. def mono() -> IO(Duration): Time.mono.ms (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=mono.ms) # Monotonic milliseconds. Pure cores that take a Nat `now` in ms take this. def mono.ms() -> IO(Nat): Time.mono.us (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=mono.us) # Monotonic microseconds. def mono.us() -> IO(Nat): Time.now (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=now) # The wall clock. It can jump when the system time is set. def now() -> IO(Instant): Time.Date.is_leap (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.is_leap) def Date.is_leap(+y: U32) -> Bool: Time.Date.days_in_month (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.days_in_month) # 0 for a month outside 1 to 12. def Date.days_in_month(+y: U32, +m: U32) -> U32: Time.Date.valid (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.valid) def Date.valid(d: Date) -> Bool: Time.Z.EPOCH (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Z.EPOCH) # z counts days from -0400-03-01, so every date from year 0 has z > 0 in a U32. # The civil-days algorithm is Howard Hinnant's, with the year starting in March. def Z.EPOCH() -> U32: Time.Date.to_z.at (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.to_z.at) def Date.to_z.at(+y: U32, +mp: U32, +d: U32) -> U32: Time.Date.to_z.go (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.to_z.go) def Date.to_z.go(jf: Bool, +y: U32, +m: U32, +d: U32) -> U32: Time.Date.to_z (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.to_z) def Date.to_z(d: Date) -> U32: Time.Date.of_z.fin (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.of_z.fin) def Date.of_z.fin(lo: Bool, +y: U32, +mp: U32, +d: U32) -> Date: Time.Date.of_z (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.of_z) def Date.of_z(+z: U32) -> Date: Time.Date.to_days (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.to_days) # Days since 1970-01-01. def Date.to_days(d: Date) -> Int.I64: Time.Date.of_z.if (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.of_z.if) def Date.of_z.if(ok: Bool, +z: U32) -> Maybe<&2, Date>: Time.Date.of_days (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.of_days) # The date days after 1970-01-01, or None outside 0000-01-01 to 9999-12-31. def Date.of_days(days: Int.I64) -> Maybe<&2, Date>: Time.Date.weekday (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Date.weekday) # 1 for Monday to 7 for Sunday, as in ISO 8601. def Date.weekday(d: Date) -> U32: Time.DateTime.valid (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.valid) def DateTime.valid(t: DateTime) -> Bool: Time.DateTime.to_instant (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.to_instant) # The instant of a UTC date and time. It does not check t; see DateTime.valid. def DateTime.to_instant(t: DateTime) -> Instant: Time.DateTime.at (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.at) def DateTime.at(m: Maybe<&2, Date>, +sod: U32, n: U32) -> Maybe<&2, DateTime>: Time.DateTime.floor (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.floor) # r is secs % 86400, which has the sign of secs. def DateTime.floor(neg: Bool, q: Int.I64, r: Int.I64, n: U32) -> Maybe<&2, DateTime>: Time.DateTime.of_instant (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.of_instant) # The UTC date and time of i, or None outside years 0 to 9999. def DateTime.of_instant(i: Instant) -> Maybe<&2, DateTime>: Time.pad (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=pad) def pad(+x: U32, w: Nat) -> String: Time.Duration.show_ms.pos (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.show_ms.pos) # Milliseconds with six decimal places. def Duration.show_ms.pos(d: Duration) -> String: Time.Duration.show_ms.sign (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.show_ms.sign) def Duration.show_ms.sign(neg: Bool, d: Duration) -> String: Time.Duration.show_ms (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Duration.show_ms) def Duration.show_ms(d: Duration) -> String: Time.frac.go (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=frac.go) # The digits of n / 10^(9 - w), with trailing zeros cut. n is not 0. def frac.go(f: Nat, z: Bool, +n: U32, +w: Nat) -> String: Time.frac (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=frac) def frac(+n: U32) -> String: Time.DateTime.rfc3339 (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.rfc3339) def DateTime.rfc3339(t: DateTime) -> String: Time.fmt.map (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=fmt.map) def fmt.map(~f: DateTime -> String, m: Maybe<&2, DateTime>) -> Maybe<&2, String>: Time.rfc3339 (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=rfc3339) # RFC 3339 in UTC, such as 1985-04-12T23:20:50.52Z. The fraction has no trailing zeros, and is left out when 0. def rfc3339(i: Instant) -> Maybe<&2, String>: Time.WEEKDAYS (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=WEEKDAYS) def WEEKDAYS() -> List<&2, String>: Time.MONTHS (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=MONTHS) def MONTHS() -> List<&2, String>: Time.name (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=name) def name(xs: List<&2, String>, +i: U32) -> String: Time.DateTime.http_date (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=DateTime.http_date) def DateTime.http_date(t: DateTime) -> String: Time.http_date (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=http_date) # IMF-fixdate (RFC 9110 §5.6.7), such as Sun, 06 Nov 1994 08:49:37 GMT. It drops the fraction of a second. def http_date(i: Instant) -> Maybe<&2, String>: Time.P (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=P) # A parser state: the numbers read so far, newest first, and the text left. type P is Data: P{vals: List<&2, U32>, rest: String} Time.is_digit (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=is_digit) def is_digit(+c: U32) -> Bool: Time.digits.go (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=digits.go) def digits.go(n: Nat, s: String, +acc: U32, ok: Bool) -> Maybe<&1, U32 & String>: Time.push (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=push) def push(vs: List<&2, U32>, r: Maybe<&1, U32 & String>) -> Maybe<&2, P>: Time.num (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=num) # Exactly n digits. def num(n: Nat, p: P) -> Maybe<&2, P>: Time.lit.if (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=lit.if) def lit.if(ok: Bool, vs: List<&2, U32>, t: String) -> Maybe<&2, P>: Time.lit2 (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=lit2) # One char that is a or b. def lit2(+a: U32, +b: U32, p: P) -> Maybe<&2, P>: Time.lit (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=lit) def lit(+c: U32, p: P) -> Maybe<&2, P>: Time.text (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=text) def text(+w: String, p: P) -> Maybe<&2, P>: Time.at.head (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=at.head) def at.head(+s: String) -> Bool: Time.secfrac.go (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=secfrac.go) # Digits after the first nine are read and dropped. d says whether s starts with a digit. def secfrac.go(s: String, d: Bool, +mul: U32, +acc: U32, +k: U32) -> U32 & U32 & String: Time.secfrac.fin (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=secfrac.fin) def secfrac.fin(vs: List<&2, U32>, r: U32 & U32 & String) -> Maybe<&2, P>: Time.secfrac.if (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=secfrac.if) def secfrac.if(dot: Bool, vs: List<&2, U32>, +s: String) -> Maybe<&2, P>: Time.secfrac (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=secfrac) # An optional '.' and one or more digits, as nanoseconds. def secfrac(p: P) -> Maybe<&2, P>: Time.zone.num (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=zone.num) def zone.num(+neg: U32, vs: List<&2, U32>, t: String) -> Maybe<&2, P>: Time.zone.if (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=zone.if) def zone.if(z: Bool, plus: Bool, minus: Bool, vs: List<&2, U32>, t: String) -> Maybe<&2, P>: Time.zone (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=zone) # Z, or +hh:mm or -hh:mm, as (sign, hh, mm) with sign 1 for west of UTC. def zone(p: P) -> Maybe<&2, P>: Time.index.go (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=index.go) def index.go(xs: List<&2, String>, +w: String, +i: U32) -> U32: Time.word (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=word) # One of names, as its index. def word(+names: List<&2, String>, p: P) -> Maybe<&2, P>: Time.mk.if (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=mk.if) def mk.if(ok: Bool, t: DateTime) -> Maybe<&2, Instant>: Time.mk (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=mk) def mk(+t: DateTime) -> Maybe<&2, Instant>: Time.rfc3339.shift (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=rfc3339.shift) def rfc3339.shift(m: Maybe<&2, Instant>, +west: U32, +hh: U32, +mm: U32) -> Maybe<&2, Instant>: Time.rfc3339.fin (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=rfc3339.fin) def rfc3339.fin(p: P) -> Maybe<&2, Instant>: Time.rfc3339.parse (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=rfc3339.parse) # An RFC 3339 date-time (§5.6), such as 1985-04-12T23:20:50.52Z or 1996-12-19T16:39:57-08:00. # T and Z may be lowercase. A leap second (:60) is refused, as Instant has none. def rfc3339.parse(s: String) -> Maybe<&2, Instant>: Time.http_date.fin (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=http_date.fin) def http_date.fin(p: P) -> Maybe<&2, Instant>: Time.http_date.parse (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=http_date.parse) # An IMF-fixdate (RFC 9110 §5.6.7), such as Sun, 06 Nov 1994 08:49:37 GMT. # The day name must be one of the seven, but it is not checked against the date. def http_date.parse(s: String) -> Maybe<&2, Instant>: Time.Ttype (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Ttype) # A local time type: seconds east of UTC, whether it is daylight time, and its abbreviation. type Ttype is Data: Ttype{utoff: Int.I64, dst: Bool, abbr: String} Time.Trans (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Trans) # From at on, local time follows types[idx]. type Trans is Data: Trans{at: Int.I64, idx: U32} Time.Zone (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=Zone) # A TZif zone (RFC 8536): transitions in time order, local time types, and the footer TZ string ("" in version 1). type Zone is Data: Zone{trans: List<&2, Trans>, types: List<&2, Ttype>, tz: String} Time.be (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=be) # n bytes of a byte string, big-endian. def be(n: Nat, s: String, +acc: U32) -> U32: Time.be32 (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=be32) def be32(+s: String, n: Nat) -> U32: Time.u8 (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=u8) def u8(+s: String, n: Nat) -> U32: Time.tzif.size (https://jend.leeeet.dev/definition.txt?path=bend-kit-time@0.3.0.0/time.bend&name=tzif.size) def tzif.size(t8: Bool) -> Nat: More: https://jend.leeeet.dev/packages/bend-kit-time.txt?definitions_offset=100