Struct imperator_save::ImperatorDate
source · [−]pub struct ImperatorDate { /* private fields */ }
Expand description
A date without a time component
See RawDate for additional date / time commentary
Implementations
sourceimpl Date
impl Date
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
sourcefn deserialize<D>(
deserializer: D
) -> Result<Date, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
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
sourcefn partial_cmp(&self, other: &Date) -> Option<Ordering>
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
sourcefn year(&self) -> i16
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);
sourcefn month(&self) -> u8
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);
sourcefn day(&self) -> u8
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);
sourcefn iso_8601(&self) -> PdsDateFormatter
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"));
sourcefn game_fmt(&self) -> PdsDateFormatter
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
sourcefn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
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 · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more