UNPKG

react-native-full-calendars

Version:

React Native Full Calendar (RNFC) is an intuitive and powerful calendar component library designed for React Native.

64 lines (51 loc) 1.64 kB
import { addDays, differenceInCalendarDays, differenceInWeeks, endOfMonth, endOfWeek, format, isAfter, isSameDay, isWithinInterval, startOfMonth, startOfWeek, } from 'date-fns'; import { DateString } from '../type'; export const getWeeksInMonth = (date: Date | string) => { const startWeek = startOfWeek(startOfMonth(date)); const endWeek = endOfWeek(endOfMonth(date)); const weeksInMonth = differenceInWeeks(endWeek, startWeek) + 1; return weeksInMonth; }; export const isLastWeekOfMonth = (date: Date): boolean => { const lastDayOfMonth = endOfMonth(date); const startOfLastWeek = startOfWeek(lastDayOfMonth); return isSameDay(date, startOfLastWeek) || isAfter(date, startOfLastWeek); }; export const isSameStartOfWeek = (date: Date, { weekStartDay }): boolean => { const startOfTheWeek = startOfWeek(date, { weekStartsOn: weekStartDay }); return isSameDay(date, startOfTheWeek); }; export const isSameStartOfMonth = (date: Date): boolean => { const startOfTheMonth = startOfMonth(date); return isSameDay(date, startOfTheMonth); }; export const getIterableDateBetweenDates = ( startDate: Date, endDate: Date ): DateString[] => { const dates = []; let currDate = startDate; while (isWithinInterval(currDate, { start: startDate, end: endDate })) { dates.push(format(currDate, 'yyyy-MM-dd')); currDate = addDays(currDate, 1); } return dates; }; export const getDaysRemaining = (date: Date) => { if (isLastWeekOfMonth(date)) { return differenceInCalendarDays(endOfMonth(date), date) + 1; } return differenceInCalendarDays(endOfWeek(date), date) + 1; };