Struct icu_calendar::week::WeekCalculator
source · #[non_exhaustive]pub struct WeekCalculator {
pub first_weekday: IsoWeekday,
pub min_week_days: u8,
}
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.
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 locale data.
✨ Enabled with the compiled_data
Cargo feature.
✨ 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
that uses custom data provided by an AnyProvider
.
sourcepub fn try_new_with_buffer_provider(
provider: &(impl BufferProvider + ?Sized),
locale: &DataLocale
) -> Result<Self, CalendarError>
pub fn try_new_with_buffer_provider( provider: &(impl BufferProvider + ?Sized), locale: &DataLocale ) -> Result<Self, CalendarError>
A version of Self::try_new
that uses custom data provided by a BufferProvider
.
✨ Enabled with the serde
feature.
sourcepub fn try_new_unstable<P>(
provider: &P,
locale: &DataLocale
) -> Result<Self, CalendarError>where
P: DataProvider<WeekDataV1Marker> + ?Sized,
pub fn try_new_unstable<P>( provider: &P, locale: &DataLocale ) -> Result<Self, CalendarError>where P: DataProvider<WeekDataV1Marker> + ?Sized,
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::{DayOfMonth, 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()
);
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