diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2022-12-19 18:38:10 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2022-12-19 18:38:10 -0800 |
commit | 110d15e345824b57d83d336d55f383509333ae99 (patch) | |
tree | 84a474881bb4522122ae1527d3009470d97e4194 | |
parent | 2cbb962c8de81b4af597352fc7e84c9b99e0fc12 (diff) | |
download | adenosine-110d15e345824b57d83d336d55f383509333ae99.tar.gz adenosine-110d15e345824b57d83d336d55f383509333ae99.zip |
timestamps: use millisecond precision
-rw-r--r-- | adenosine-cli/src/lib.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/adenosine-cli/src/lib.rs b/adenosine-cli/src/lib.rs index 19ba060..e232667 100644 --- a/adenosine-cli/src/lib.rs +++ b/adenosine-cli/src/lib.rs @@ -316,24 +316,28 @@ pub fn value_from_fields(fields: Vec<ArgField>) -> Value { Value::Object(serde_json::map::Map::from_iter(map.into_iter())) } -/// Helper to generate the current timestamp as right now, UTC, formatted as a string. +/// Helper to generate the current timestamp as right now, UTC, formatted as an RFC 3339 string. /// -/// Returns something like "2022-11-22T09:21:15Z" +/// Currently, bluesky PDS expects millisecond precision, so we use that. +/// +/// Returns something like "2022-11-22T09:21:15.640Z" pub fn created_at_now() -> String { - let now = time::OffsetDateTime::now_utc() - .replace_microsecond(0) - .unwrap(); + let now = time::OffsetDateTime::now_utc(); + // remove microsecond precision, but retain millisecond precision + let ms = now.millisecond(); + let now = now.replace_microsecond(0).unwrap(); + let now = now.replace_millisecond(ms).unwrap(); now.format(&time::format_description::well_known::Rfc3339) .unwrap() } #[test] fn test_created_at_now() { - // eg: 2022-11-22T09:20:44Z + // eg: 2022-11-22T09:20:44.123Z let ts = created_at_now(); println!("{}", ts); assert_eq!(&ts[4..5], "-"); assert_eq!(&ts[7..8], "-"); assert_eq!(&ts[10..11], "T"); - assert_eq!(&ts[19..20], "Z"); + assert_eq!(&ts[23..24], "Z"); } |