@viacomcbs/broadcast-calendar

Broadcast Calendar Dates Functions

Usage no npm install needed!

<script type="module">
  import viacomcbsBroadcastCalendar from 'https://cdn.skypack.dev/@viacomcbs/broadcast-calendar';
</script>

README

US Broadcast Calendar Date Functions

build

This is a collection of functions to help converting good ol' dates to Broadcast dates when you need to be working in the Broadcast Calendar.

Installation

npm i @viacomcbs/broadcast-calendar

This library uses luxon to work with dates.

Usage

Year Quarter

type YearQuarter = {
  year: number;
  quarter: number;
};
  • isYearQuarter(yq?: YearQuarter): yq is YearQuarter

YearQuarter type guard function

  • getBroadcastYear(date: DateTime): number

returns broadcast year for a given date

  • getBroadcastQuarter(date: DateTime): number

returns broadcast quarter for a given date

  • getBroadcastQuarterWeek(date: DateTime): [number, number]

returns [quarter, week] numbers for a given date

  • getBroadcastYearQuarter(date: DateTime): YearQuarter

returns broadcast year and quarter for a given date

  • getBroadcastYearsQuarters(Interval): YearQuarters

returns array of broadcast years and quarters for a given dates interval

  • incrementYearQuarter({ year, quarter }: YearQuarter, incrementValue?: number): YearQuarter

increments quarter (and year if needed) for a given year quarter

  • yearQuarterIsGreaterThan(a: YearQuarter, b: YearQuarter): boolean

return true if a is greater than b

Week

  • getBroadcastWeek(date: DateTime): number

returns broadcast week number for a given date

  • getBroadcastWeekKey(date: DateTime): number

returns broadcast week key for a given date. Examples: 202103, 202232

Range

Set of functions that return broadcast dates Interval for a given date.

  • getBroadcastWeekKeyRange(weekKey: number): Interval

  • getBroadcastWeekRange(date: DateTime): Interval

  • getBroadcastMonthRange(date: DateTime): Interval

  • getBroadcastQuarterRange(date: DateTime): Interval

  • getBroadcastYearRange(date: DateTime): Interval

  • getBroadcastQuarterRangeFromYearQuarter({ year, quarter, }: YearQuarter): Interval

  • getBroadcastWeeksInRange(range: Interval): Interval[]

returns the array of broadcast weeks intervals for a given range

Parse

  • parseDateFromSQL(date: string): DateTime
  • parseDateFromISO(date: string): DateTime
  • parseDateFromBroadcastWeekKey(weekKeyStr: string): DateTime

Parses string and returns luxon DateTime in US Broadcast calendar time zone (EST)

  • parseIntervalFromSQL(range: StringInterval): Interval
  • parseIntervalFromISO(range: StringInterval): Interval

Parses string interval and returns luxon Interval in US Broadcast calendar time zone (EST)

Format

  • formatBroadcastDateRange(range: Interval, format?: (date: DateTime) => string): StringInterval

Takes Interval instance and returns a tuple with two ISO (or with format function) formatted dates

Calendar

  • getBroadcastCalendar(date: DateTime): BroadcastCalendar

returns all the broadcast calendar information

CLI

broadcast-calendar [ISO Date | Broadcast Week Key]

Outputs broadcast calendar data JSON for given date or broadcast week key. If the date or key are omited outputs calendar for today.

License Apache 2.0 - see LICENSE for more details.