Struct icu_calendar::week_of::WeekCalculator
source · #[non_exhaustive]pub struct WeekCalculator {
pub first_weekday: IsoWeekday,
pub min_week_days: u8,
pub weekend: Option<WeekdaySet>,
}
Expand description
Calculator for week-of-month and week-of-year based on locale-specific configurations.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.first_weekday: IsoWeekday
The first day of a week.
min_week_days: u8
For a given week, the minimum number of that week’s days present in a given month or year for the week to be considered part of that month or year.
weekend: Option<WeekdaySet>
The set of weekend days, if available
Implementations§
source§impl WeekCalculator
impl WeekCalculator
sourcepub fn try_new(locale: &DataLocale) -> Result<Self, CalendarError>
pub fn try_new(locale: &DataLocale) -> Result<Self, CalendarError>
Creates a new WeekCalculator
from compiled data.
✨ Enabled with the compiled_data
Cargo feature.
sourcepub fn try_new_with_any_provider(
provider: &(impl AnyProvider + ?Sized),
locale: &DataLocale,
) -> Result<Self, CalendarError>
pub fn try_new_with_any_provider( provider: &(impl AnyProvider + ?Sized), locale: &DataLocale, ) -> Result<Self, CalendarError>
A version of Self::try_new_unstable
that uses custom data provided by an AnyProvider
.
sourcepub fn try_new_unstable<P>(
provider: &P,
locale: &DataLocale,
) -> Result<Self, CalendarError>
pub fn try_new_unstable<P>( provider: &P, locale: &DataLocale, ) -> Result<Self, CalendarError>
A version of Self::try_new
that uses custom data provided by a DataProvider
.
sourcepub fn week_of_month(
&self,
day_of_month: DayOfMonth,
iso_weekday: IsoWeekday,
) -> WeekOfMonth
pub fn week_of_month( &self, day_of_month: DayOfMonth, iso_weekday: IsoWeekday, ) -> WeekOfMonth
Returns the week of month according to a calendar with min_week_days = 1.
This is different from what the UTS35 spec describes 1 but the latter is missing a month of week-of-month field so following the spec would result in inconsistencies (e.g. in the ISO calendar 2021-01-01 is the last week of December but ‘MMMMW’ would have it formatted as ‘week 5 of January’).
§Examples
use icu::calendar::types::{DayOfMonth, IsoWeekday, WeekOfMonth};
use icu::calendar::week::WeekCalculator;
let week_calculator =
WeekCalculator::try_new(&icu::locid::locale!("und-GB").into())
.expect("locale should be present");
// Wednesday the 10th is in week 2:
assert_eq!(
WeekOfMonth(2),
week_calculator.week_of_month(DayOfMonth(10), IsoWeekday::Wednesday)
);
sourcepub fn week_of_year(
&self,
day_of_year_info: DayOfYearInfo,
iso_weekday: IsoWeekday,
) -> Result<WeekOf, CalendarError>
pub fn week_of_year( &self, day_of_year_info: DayOfYearInfo, iso_weekday: IsoWeekday, ) -> Result<WeekOf, CalendarError>
Returns the week of year according to the weekday and DayOfYearInfo
.
§Examples
use icu::calendar::types::IsoWeekday;
use icu::calendar::week::{RelativeUnit, WeekCalculator, WeekOf};
use icu::calendar::Date;
let week_calculator =
WeekCalculator::try_new(&icu::locid::locale!("und-GB").into())
.expect("locale should be present");
let iso_date = Date::try_new_iso_date(2022, 8, 26).unwrap();
// Friday August 26 is in week 34 of year 2022:
assert_eq!(
WeekOf {
unit: RelativeUnit::Current,
week: 34
},
week_calculator
.week_of_year(iso_date.day_of_year_info(), IsoWeekday::Friday)
.unwrap()
);
sourcefn weekday_index(&self, weekday: IsoWeekday) -> i8
fn weekday_index(&self, weekday: IsoWeekday) -> i8
Returns the zero based index of weekday
vs this calendar’s start of week.
sourcepub fn weekend(&self) -> impl Iterator<Item = IsoWeekday>
pub fn weekend(&self) -> impl Iterator<Item = IsoWeekday>
Weekdays that are part of the ‘weekend’, for calendar purposes. Days may not be contiguous, and order is based off the first weekday.
Trait Implementations§
source§impl Clone for WeekCalculator
impl Clone for WeekCalculator
source§fn clone(&self) -> WeekCalculator
fn clone(&self) -> WeekCalculator
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more