File size: 2,170 Bytes
e310cf5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import {
  format,
  addDays,
  subDays,
  startOfWeek,
  isSameDay,
  parseISO,
} from 'date-fns'

export function formatDateForApi(date: Date): string {
  return format(date, 'yyyy-MM-dd')
}

export function formatTimeForApi(time: string): string {
  if (time.includes(':')) {
    const parts = time.split(':')
    return `${parts[0]}:${parts[1]}`
  }
  return time
}

export function formatTimeDisplay(time: string): string {
  const [hours, minutes] = time.split(':').map(Number)
  const period = hours >= 12 ? 'PM' : 'AM'
  const displayHours = hours % 12 || 12
  return `${displayHours}:${minutes.toString().padStart(2, '0')} ${period}`
}

export function formatTimeRange(start: string, end: string): string {
  return `${formatTimeForDisplay24h(start)} - ${formatTimeForDisplay24h(end)}`
}

export function formatTimeForDisplay24h(time: string): string {
  const parts = time.split(':')
  return `${parts[0]}:${parts[1]}`
}

export function getDayOfMonth(date: Date): string {
  return format(date, 'd')
}

export function getShortDayName(date: Date): string {
  return format(date, 'EEE')
}

export function getWeekdayLetter(date: Date): string {
  return format(date, 'EEEEE')
}

export function getFullDateDisplay(date: Date): string {
  return format(date, 'EEE / MMM yyyy')
}

export function getHeaderDayLabel(date: Date): string {
  return format(date, 'EEE')
}

export function getHeaderMonthYearLabel(date: Date): string {
  return format(date, 'MMM yyyy')
}

export function getMonthYear(date: Date): string {
  return format(date, 'MMMM yyyy')
}

export function getWeekDays(date: Date): Date[] {
  const start = startOfWeek(date, { weekStartsOn: 0 })
  return Array.from({ length: 7 }, (_, i) => addDays(start, i))
}

export function getPreviousWeek(date: Date): Date {
  return subDays(date, 7)
}

export function getNextWeek(date: Date): Date {
  return addDays(date, 7)
}

export function isSameDayAs(date1: Date, date2: Date): boolean {
  return isSameDay(date1, date2)
}

export function parseDateString(dateStr: string): Date {
  return parseISO(dateStr)
}

export function isToday(date: Date): boolean {
  return isSameDay(date, new Date())
}