pub struct Eu4Date { /* private fields */ }
Expand description
Struct specialized to parsing, formatting, and manipulating dates in EU4 A date without a time component
See RawDate for additional date / time commentary
Implementations
sourceimpl Date
impl Date
Struct specialized to parsing, formatting, and manipulating dates in EU4
sourcepub fn from_ymd_opt(year: i16, month: u8, day: u8) -> Option<Date>
pub fn from_ymd_opt(year: i16, month: u8, day: u8) -> Option<Date>
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());
sourcepub fn from_ymd(year: i16, month: u8, day: u8) -> Date
pub fn from_ymd(year: i16, month: u8, day: u8) -> Date
Create a new date from year, month, and day parts
Will panic if the date does not exist.
sourcepub fn parse<T>(s: T) -> Result<Date, DateError> where
T: AsRef<[u8]>,
pub fn parse<T>(s: T) -> Result<Date, DateError> where
T: AsRef<[u8]>,
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);
sourcepub fn days_until(self, other: &Date) -> i32
pub fn days_until(self, other: &Date) -> i32
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));
sourcepub fn add_days(self, days: i32) -> Date
pub fn add_days(self, days: i32) -> 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.
sourcepub fn from_binary(s: i32) -> Option<Date>
pub fn from_binary(s: i32) -> Option<Date>
Decodes a date from a number that had been parsed from binary data
The hour component, if present, will be ignored
sourcepub fn from_binary_heuristic(s: i32) -> Option<Date>
pub fn from_binary_heuristic(s: i32) -> Option<Date>
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
sourceimpl<'de> Deserialize<'de> for Date
impl<'de> Deserialize<'de> for Date
sourcepub fn deserialize<D>(
deserializer: D
) -> Result<Date, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
pub fn deserialize<D>(
deserializer: D
) -> Result<Date, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl Ord for Date
impl Ord for Date
sourceimpl PartialOrd<Date> for Date
impl PartialOrd<Date> for Date
sourcepub fn partial_cmp(&self, other: &Date) -> Option<Ordering>
pub fn partial_cmp(&self, other: &Date) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl PdsDate for Date
impl PdsDate for Date
sourcepub fn year(&self) -> i16
pub fn year(&self) -> i16
Year of the date
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1444, 2, 3);
assert_eq!(date.year(), 1444);
sourcepub fn month(&self) -> u8
pub fn month(&self) -> u8
Month of the date
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1444, 2, 3);
assert_eq!(date.month(), 2);
sourcepub fn day(&self) -> u8
pub fn day(&self) -> u8
Day of the date
use jomini::common::{Date, PdsDate};
let date = Date::from_ymd(1444, 2, 3);
assert_eq!(date.day(), 3);
sourcepub fn iso_8601(&self) -> PdsDateFormatter
pub fn iso_8601(&self) -> PdsDateFormatter
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"));
sourcepub fn game_fmt(&self) -> PdsDateFormatter
pub fn game_fmt(&self) -> PdsDateFormatter
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"));
sourceimpl Serialize for Date
impl Serialize for Date
sourcepub fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
pub fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Copy for Date
impl Eq for Date
impl StructuralEq for Date
impl StructuralPartialEq for Date
Auto Trait Implementations
impl RefUnwindSafe for Date
impl Send for Date
impl Sync for Date
impl Unpin for Date
impl UnwindSafe for Date
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more