diff --git a/Cargo.lock b/Cargo.lock index 7f47489..67b64d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -106,9 +106,9 @@ dependencies = [ "clap", "comemo", "fontdb 0.22.0", + "jiff", "maud", "serde", - "time", "tokio", "typst", "typst-pdf", @@ -1144,6 +1144,31 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +[[package]] +name = "jiff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a45489186a6123c128fdf6016183fcfab7113e1820eb813127e036e287233fb" +dependencies = [ + "jiff-tzdb-platform", + "windows-sys 0.59.0", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" +dependencies = [ + "jiff-tzdb", +] + [[package]] name = "jpeg-decoder" version = "0.3.1" @@ -1343,15 +1368,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "numerals" version = "0.1.4" @@ -2141,9 +2157,7 @@ checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", diff --git a/Cargo.toml b/Cargo.toml index a84aa38..2458087 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,9 +10,9 @@ axum-extra = { version = "0.9.4", features = ["form"] } clap = { version = "4.5.20", features = ["derive", "deprecated"] } comemo = "0.4.0" fontdb = "0.22.0" +jiff = "0.1.13" maud = { version = "0.26.0", features = ["axum"] } serde = { version = "1.0.210", features = ["derive"] } -time = { version = "0.3.36", features = ["macros", "formatting", "local-offset"] } tokio = { version = "1.40.0", features = ["full"] } typst = "0.11.1" typst-pdf = "0.11.1" diff --git a/src/endpoints/index.rs b/src/endpoints/index.rs index d687caf..48d30b5 100644 --- a/src/endpoints/index.rs +++ b/src/endpoints/index.rs @@ -3,9 +3,9 @@ use axum::{ response::{IntoResponse, Response}, }; use axum_extra::extract::Form; +use jiff::{ToSpan, Zoned}; use maud::{html, Markup, PreEscaped}; use serde::Deserialize; -use time::{macros::format_description, OffsetDateTime}; use crate::{ endpoints::page, @@ -13,9 +13,12 @@ use crate::{ }; pub async fn get() -> Markup { - let now = OffsetDateTime::now_local().unwrap_or_else(|_| OffsetDateTime::now_utc()); - let month = now.date().replace_day(1).unwrap().previous_day().unwrap(); - let month = month.format(format_description!("[year]-[month]")).unwrap(); + // We assume that people still want to fill out the previous month's time + // sheet during the first two weeks of the following month. + let month = Zoned::now() + .checked_sub(2.weeks()) + .unwrap() + .strftime("%Y-%m"); page( html! {