forked from trollepierre/el-projector
-
Notifications
You must be signed in to change notification settings - Fork 0
/
date-utils.js
48 lines (42 loc) · 1.82 KB
/
date-utils.js
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
const differenceInYears = require('date-fns/fp/differenceInYears')
const differenceInCalendarDays = require('date-fns/fp/differenceInCalendarDays')
const addDays = require('date-fns/fp/addDays')
const isAfter = require('date-fns/fp/isAfter')
const isBefore = require('date-fns/fp/isBefore')
const isSameDay = require('date-fns/fp/isSameDay')
const subDays = require('date-fns/fp/subDays')
const addYears = require('date-fns/fp/addYears')
const { parse, isValid } = require('date-fns')
const formatWithOptions = require('date-fns/fp/formatWithOptions')
const fr = require('date-fns/locale/fr')
const { ifElse, isNil } = require('ramda')
const options = { locale: fr }
const formatDate = formatWithOptions(options)
const numberOfDaysInLate = date => differenceInCalendarDays(date)(new Date())
const parseDate = date => parse(date, 'dd/MM/yyyy', new Date())
const formatDateWithLittleEndianLongFormat = ifElse(isNil, () => '', formatDate('dd/MM/yyyy'))
const formatDateWithInternationalLongDateTimeFormat = formatDate('yyyy-MM-dd:HH:mm:ss')
const earliestDate = (firstDate, secondDate) => (isAfter(firstDate)(secondDate) ? firstDate : secondDate)
const latestDate = (firstDate, secondDate) => (isBefore(firstDate)(secondDate) ? firstDate : secondDate)
const today = () => formatDateWithLittleEndianLongFormat(new Date())
const isToday = date => isSameDay(date)(new Date())
const determineNextBirthday = birthDate => {
const age = differenceInYears(birthDate, new Date())
const lastBirthday = addYears(age)(birthDate)
return isToday(lastBirthday) ? lastBirthday : addYears(age + 1)(birthDate)
}
module.exports = {
numberOfDaysInLate,
parseDate,
formatDateWithLittleEndianLongFormat,
formatDateWithInternationalLongDateTimeFormat,
earliestDate,
latestDate,
addYears,
addDays,
subDays,
today,
determineNextBirthday,
isToday,
isValid,
}