///|
fn pad2(n : Int) -> String {
  if n < 10 {
    "0\{n}"
  } else {
    n.to_string()
  }
}

///|
fn amz_timestamp(now_ms : UInt64) -> String raise {
  let secs = (now_ms / 1000UL).reinterpret_as_int64()
  let zdt = @time.unix(secs, zone=@time.utc_zone)
  let dt = zdt.to_plain_date_time()
  "\{dt.year()}\{pad2(dt.month())}\{pad2(dt.day())}T\{pad2(dt.hour())}\{pad2(dt.minute())}\{pad2(dt.second())}Z"
}

///|
fn now_timestamp() -> String raise {
  amz_timestamp(@env.now())
}