UNPKG

@leancodepl/api-date-dayjs

Version:

Day.js integration for API date type conversion

153 lines (89 loc) 3.15 kB
# @leancodepl/api-date-dayjs Date conversion utilities using Day.js for API date types. ## Installation ```bash npm install @leancodepl/api-date-dayjs # or yarn add @leancodepl/api-date-dayjs ``` ## API ### `fromApiDate(date)` Converts ApiDateOnly to Day.js object. **Parameters:** - `date: ApiDateOnly` - The API date string to convert **Returns:** Day.js object ### `toApiDate(date)` Converts Day.js object to ApiDateOnly. **Parameters:** - `date: dayjs.Dayjs` - The Day.js object to convert **Returns:** ApiDateOnly string ### `fromApiTime(time)` Converts ApiTimeOnly to Day.js object. **Parameters:** - `time: ApiTimeOnly` - The API time string to convert **Returns:** Day.js object ### `toApiTime(time)` Converts Day.js object to ApiTimeOnly. **Parameters:** - `time: dayjs.Dayjs` - The Day.js object to convert **Returns:** ApiTimeOnly string ### `fromApiDateTimeOffset(datetime)` Converts ApiDateTimeOffset to Day.js object. **Parameters:** - `datetime: ApiDateTimeOffset` - The API datetime with offset string to convert **Returns:** Day.js object ### `toApiDateTimeOffset(time)` Converts Day.js object to ApiDateTimeOffset. **Parameters:** - `time: dayjs.Dayjs` - The Day.js object to convert **Returns:** ApiDateTimeOffset string ### `fromApiTimeSpan(timeSpan)` Converts ApiTimeSpan to Day.js duration. **Parameters:** - `timeSpan: ApiTimeSpan` - The API timespan string to convert **Returns:** Day.js duration object ### `toApiTimeSpan(duration)` Converts Day.js duration to ApiTimeSpan. **Parameters:** - `duration: duration.Duration` - The Day.js duration object to convert **Returns:** ApiTimeSpan string ### `dropLocalOffset(time)` Utility to remove local timezone offset from Day.js object. **Parameters:** - `time: dayjs.Dayjs` - The Day.js object to process **Returns:** Day.js object with UTC offset but keeping local time ## Usage Examples ### Date Conversion ```typescript import { fromApiDate, toApiDate } from "@leancodepl/api-date-dayjs" import dayjs from "dayjs" const apiDate = "2023-12-25" const dayjsDate = fromApiDate(apiDate) console.log(dayjsDate.format("YYYY-MM-DD")) // '2023-12-25' const convertedBack = toApiDate(dayjsDate) console.log(convertedBack) // '2023-12-25' ``` ### Time Conversion ```typescript import { fromApiTime, toApiTime } from "@leancodepl/api-date-dayjs" const apiTime = "14:30:00" const dayjsTime = fromApiTime(apiTime) const convertedBack = toApiTime(dayjsTime) console.log(convertedBack) // '14:30:00' ``` ### DateTime with Offset ```typescript import { fromApiDateTimeOffset, toApiDateTimeOffset } from "@leancodepl/api-date-dayjs" const apiDateTime = "2023-12-25T14:30:00+01:00" const dayjsDateTime = fromApiDateTimeOffset(apiDateTime) const convertedBack = toApiDateTimeOffset(dayjsDateTime) console.log(convertedBack) // '2023-12-25T14:30:00+01:00' ``` ### Timezone Handling ```typescript import { dropLocalOffset } from "@leancodepl/api-date-dayjs" import dayjs from "dayjs" const localDate = dayjs("2023-12-25T14:30:00") const utcDate = dropLocalOffset(localDate) console.log(utcDate.format()) // Date without local offset ```