137
submitted 6 months ago* (last edited 6 months ago) by snaggen@programming.dev to c/rust@programming.dev

TIL: Sweden had February 30 in 1712 https://en.wikipedia.org/wiki/1712_in_Sweden , so I decided to see how chrono handled that.

use chrono::TimeZone;
use chrono_tz::Europe::Stockholm;

fn main() {
    let feb30 =  Stockholm.ymd(1712,2,30);
    println!("Date: {:?}", feb30);
}
 target/debug/feb30
thread 'main' panicked at /home/snaggen/.cargo/registry/src/index.crates.io-6f17d22bba15001f/chrono-0.4.34/src/offset/mod.rs:252:40:
No such local time
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Result (as expected): Not well! ๐Ÿ˜„

I also tested Java with

ZonedDateTime feb30 = ZonedDateTime.of(1712,2,30, 0,0,0,0, ZoneId.of("Europe/Stockholm"));

with simmilar result

java.time.DateTimeException: Invalid date 'FEBRUARY 30'

So, lets take a minute of silence for all the programmers of history related software, may the spagetti monster have mercy on their souls.

you are viewing a single comment's thread
view the rest of the comments
[-] Turun@feddit.de 1 points 6 months ago* (last edited 6 months ago)

Yes, that's one actual problem that is not covered by everyday speech as it is in use today.

I think it would be very quickly solved by language evolution. E.g. we'd switch to something like "the evening on the 20th" or "the third day next week" (weeks are defined by the presence of weekends, just like they are today). But nonetheless it's a valid argument.

Edit: even today weekends cover multiple days. However you define a weekend now can probably be used to define a day in the global UTC system.

this post was submitted on 01 Mar 2024
137 points (98.6% liked)

Rust

5744 readers
35 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS