Struct jomini::common::Date [−][src]
pub struct Date { /* fields omitted */ }
Expand description
A date without a time component
See RawDate for additional date / time commentary
Implementations
Create a new date from year, month, and day parts
Will return None
if the date does not exist
use jomini::common::Date;
assert_eq!(Date::from_ymd_opt(1444, 11, 11), Some(Date::from_ymd(1444, 11, 11)));
assert_eq!(Date::from_ymd_opt(800, 5, 3), Some(Date::from_ymd(800, 5, 3)));
assert!(Date::from_ymd_opt(800, 0, 3).is_none());
assert!(Date::from_ymd_opt(800, 1, 0).is_none());
assert!(Date::from_ymd_opt(800, 13, 1).is_none());
assert!(Date::from_ymd_opt(800, 12, 32).is_none());
assert!(Date::from_ymd_opt(2020, 2, 29).is_none());
Create a new date from year, month, and day parts
Will panic if the date does not exist.
Parses a string and returns a new Date
if valid. The expected
format is either YYYY.MM.DD or a number representing of the equivalent
binary representation.
use jomini::common::{Date, PdsDate};
let date = Date::parse("1444.11.11").expect("to parse date");
assert_eq!(date.year(), 1444);
assert_eq!(date.month(), 11);
assert_eq!(date.day(), 11);
Returns the number of days between two dates
use jomini::common::Date;
let date = Date::parse("1400.1.2").unwrap();
let date2 = Date::parse("1400.1.3").unwrap();
let date3 = Date::parse("1401.1.2").unwrap();
let date4 = Date::parse("1401.12.31").unwrap();
assert_eq!(1, date.days_until(&date2));
assert_eq!(365, date.days_until(&date3));
assert_eq!(728, date.days_until(&date4));
assert_eq!(-728, date4.days_until(&date));
Return a new date that is the given number of days in the future from the current date
use jomini::common::Date;
let date = Date::parse("1400.1.2").unwrap();
let expected = Date::parse("1400.1.3").unwrap();
let expected2 = Date::parse("1400.1.1").unwrap();
assert_eq!(expected, date.add_days(1));
assert_eq!(expected2, date.add_days(-1));
Will panic on overflow or underflow.
Decodes a date from a number that had been parsed from binary data
The hour component, if present, will be ignored
Decodes a date from a number that had been parsed from binary data with the added check that the date is not too far fetched. This function is useful when working with binary data and it’s not clear with an encountered integer is supposed to represent a date or a number.
We use -100 as a cut off dates for years. Antonio I (EU4) holds the
record with a birth date of -58.1.1
. The exception is monuments,
which date back to -2500 or even farther back (mods), but this
function is just a heuristic so direct any extreme dates towards
Date::from_binary
.
Trait Implementations
Deserialize this value from the given Serde deserializer. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Year of the date
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1444, 2, 3);
assert_eq!(date.year(), 1444);
Month of the date
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1444, 2, 3);
assert_eq!(date.month(), 2);
Day of the date
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1444, 2, 3);
assert_eq!(date.day(), 3);
Formats a date in the ISO 8601 format: YYYY-MM-DD
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1400, 1, 2);
assert_eq!(date.iso_8601().to_string(), String::from("1400-01-02"));
Formats a date in the game format: Y.M.D
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1400, 1, 2);
assert_eq!(date.game_fmt().to_string(), String::from("1400.1.2"));
Auto Trait Implementations
impl RefUnwindSafe for Date
impl UnwindSafe for Date
Blanket Implementations
Mutably borrows from an owned value. Read more