timelex
v1.0.3
Published
Module for working with time
Downloads
4
Maintainers
Readme
⏱️ Модуль для работы со временем Timelex ⏱️
Оглавление
- add
- diff
- addSeconds
- addMinutes
- addHours
- addDays
- addMonth
- addYears
- getMonthString
- getWeekDaysString
- getMonthDayCount
- update
- setTime
- setDate
- setTz
- startDay
- endDay
- equals
- equalsDate
- equalsTime
- isBetween
- secondsBetween
- minutesBetween
- hoursBetween
- daysBetween
- weeksBetween
- monthBetween
- yearsBetween
- split
- formatLocale
- format
- toISO
- convertToDate
- toString
- valueOf
Конструкторы и краткое описание
В основе всех вычислений объектов Time используются два ключевых поля - timestamp и ticks
- timestamp - это классическая метка времени UNIX где за 0 принимается дата равная 01.01.1970гг
- ticks - метка времени где за 0 принимается дата равная 01.01.0001гг
Все конвертации между двумя значениями проводятся внутри класса Time без необходимости делать это вручную, но если такая необходимость возникнет вы можете воспользоваться функциями для конвертации меток между собой
Для создания объекта Time можно использовать конструктор либо статичную функцию create
let time1 = new Time(); // Объект Time с текущим временем
let time2 = new Time(123009328409); // Объект Time с из Unix метки времени
let time3 = Time.create(); // Объект Time c временем равным началу эпохи Unix (т.е 00:00:00ч 01.01.1970г)
let time4 = Time.create(2022,10,11); // Объект Time c датой 11.10.2022г 00:00:00ч
При необходимости объект времени можно создать (ковертировать в Time) используя стандартные объекты Date и строки времени
let date = new Date()
let time1 = new Time(date); // Объект Time из Date
let time2 = new Time('2005-08-09T18:31:42+03'); // Объект Time из строки в формате ISO
Все доступные форматы строк ISO находятся в Time.ISO_FORMATS
Статические поля класса Time
Time.MAX_TICKS_VALUE (Number)(getter)- Максимально возможное значение ticks в Time объектах
Time.MIN_TICKS_VALUE (Number)(getter) - Минимально возможное значение ticks в Time объектах
Time.MAX_TIMESTAMP_VALUE (Number)(getter) - Минимально возможное значение timestamp в Time объектах
Time.MIN_TIMESTAMP_VALUE (Number)(getter) - Минимально возможное значение timestamp в Time объектах
Time.TIMEZONE (Object)(getter) - Все поддерживаемые временные зоны JS, каждый объект временной зоны включает в себя массив names с именами локалей для текущей временной зоны и числовое значение value. Любую из поддерживаемых зон можно получить через свойство plus или minus с определенным значением (исключением является zero). На данный момент поддерживаются следующие свойства:
[
'minus_11', 'minus_10', 'minus_10_30',
'minus_9', 'minus_8', 'minus_7',
'minus_6', 'minus_5', 'minus_4',
'minus_4_-30', 'minus_3', 'minus_2',
'minus_1', 'zero', 'plus_1',
'plus_2', 'plus_3', 'plus_4_30',
'plus_4', 'plus_5_30', 'plus_5',
'plus_6_30', 'plus_6_45', 'plus_6',
'plus_7_30', 'plus_7', 'plus_8',
'plus_9_45', 'plus_9', 'plus_10_30',
'plus_10', 'plus_11_30', 'plus_11',
'plus_12', 'plus_13', 'plus_14_45',
'plus_14'
]
Пример временной зоны plus_11:
console.log(Time.TIMEZONE.plus_11)
//Результат вывода:
{
names: [
'Antarctica/Casey',
'Antarctica/Macquarie',
'Asia/Magadan',
'Asia/Sakhalin',
'Asia/Srednekolymsk',
'Australia/Currie',
'Australia/Hobart',
'Australia/Lord_Howe',
'Australia/Melbourne',
'Australia/Sydney',
'Pacific/Bougainville',
'Pacific/Efate',
'Pacific/Guadalcanal',
'Pacific/Kosrae',
'Pacific/Noumea',
'Pacific/Ponape'
],
value: 11
}
Time.DEFAULT_TZ (Object)(getter) - Временная зона установленная по умолчанию (начальное значение соответствует - Time.TIMEZONE.zero)
Time.ISO_FORMATS (Object)(getter) - Объект с поддерживаемыми форматами ISO. Каждый шаблон может использоваться с функцией функцией format
Включает в себя следующие свойства и значения:
{
TIME: '@{Hm}',
TIMECLN: '@{H:m}',
TIMESEC: '@{HmS}',
TIMESECCLN: '@{H:m:S}',
TIMESECTH: '@{HmSTh}',
TIMESECCLNTH: '@{H:m:STh}',
TIMESECTZ: '@{HmSThTp}',
TIMESECCLNTZ: '@{H:m:SThTp}',
DATEYMCLN: '@{Y-M}',
DATEYM: '@{YM}',
DATEYMDCLN: '@{Y-M-D}',
DATEYMD: '@{YMD}',
DATETIMEYMD: '@{YMDHmS}',
DATETIMECLN: '@{Y-M-DTH:m:S}',
DATETIMETH: '@{YMDTHmSTh}',
DATETIMECLNTH: '@{Y-M-DTH:m:STh}',
DATETIMETZ: '@{YMDTHmSThTp}',
DATETIMECLNTZCLN: '@{Y-M-DTH:m:STz}',
DATETIMEMSCLN: '@{Y-M-DTH:m:S.s}',
DATETIMEMSCLNTH: '@{Y-M-DTH:m:S.sTh}',
DATETIMEMSCLNTZ: '@{Y-M-DTH:m:S.sThTp}',
DATETIMEMSCLNTZCLN: '@{Y-M-DTH:m:S.sTz}'
}
Статические функции для работы со временем
Time.isLeapYear(year)
Функция для проверки года на високосность
Параметры:
- year (Number) - год от 1 до 9999
Возврат:
(Boolean) Логическое значение указывающее является ли год високосным
Time.isLeapYear(2022); // false
Time.isLeapYear(2024); // true
Time.setDefaultTz(tz)
Функция установки текущей временной зоны по умолчанию, для установки корректной временной зоны используйте коллекцию Time.TIMEZONE
Параметры:
- tz (Number) - число соответствующее сдвигу в часах
Возврат:
(Boolean) Логическое значение указывающее удалось ли установить часовой пояс
Time.setDefaultTz(Time.TIMEZONE.plus_3) // Устанавливает временное смещение по умолчанию +03:00
Time.getMonthDayCount(month,isLeap)
Функция для получения количества дней указанного месяца
Параметры:
- month (Number) - Месяц от 1 до 12
- isLeap (Boolean) - Значение указывающее является ли год високосным
Возврат:
(Number) Число дней в указанном месяце
Time.getMonthDayCount(2,Time.isLeapYear(2008)) // Вернет 29
Time.getMonthDayCount(2,false) // Вернет 28
Time.getMonthString(month,locale)
Функция для получения наименования указанного месяца, либо всех месяцев в зависимости от параметра month
Параметры:
- month (Number)(не обязательный) - Месяц от 1 до 12, если не указывать или указать -1 вернет массив наименований всех месяцев
- locale (String)(не обязательный) - Параметр локализации (по умолчанию - ru)
Возврат:
(String | Array<String>) Строка или массив строк с наименованием месяцев
Time.getMonthString() // Вернет ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь']
Time.getMonthString(3) // Вернет 'Март'
Time.getDayInWeekString(day,locale)
Функция для получения наименования дня недели, либо всех дней в зависимости от параметра day
Параметры:
- day (Number)(не обязательный) - День недели от 1 до 7, если не указывать или указать -1 вернет массив наименований всех дней недели
- locale (String)(не обязательный) - Параметр локализации (по умолчанию - ru)
Возврат:
(String | Array<String>) Строка или массив строк с наименованием дней недели
Time.getDayInWeekString() // Вернет ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Восресенье']
Time.getDayInWeekString(3) // Вернет 'Среда'
Time.random(min,max,tz)
Функция для получения случайной временной метки в пределах от min до max (включительно). По умолчанию значение min соответствует минимально возможной временной метки (01.01.0001) а max наибольшей (31.12.9999) соответственно
Параметры:
- min (Number | Time | Date | String | Object)(не обязательный) - Минимальное значение времени, метки времени в мс.,объекта Time или объекта с настройками
- max (Number | Time | Date | String | Object)(не обязательный) - Максимальное значение времени, метки времени в мс.,объекта Time или объекта с настройками
- tz (Number | String | Object)(не обязательный) - Временная зона
Возврат:
(Time) Новый объект Time
let t = Time.random()
console.log(t.toISO()) // Вывод: 4018-12-03T00:21:47.715+0000
Time.timestampToTicks(timestamp)
Функция для получения кол-ва миллисекунд прошедших с 1 января 1 года н.э. из метки времени UNIX
Параметры:
- timestamp (Number) - Временная метка Unix
Возврат:
(Number) Кол-во миллисекунд
Time.timestampToTicks(100000) // Вернет 62135596900000
Time.ticksToTimestamp(ticks)
Функция для получения метки времени UNIX из кол-ва миллисекунд прошедших с 1 января 1 года н.э.
Параметры:
- ticks (Number) - Кол-во миллисекунд с 1 января 1 г. н.э.
Возврат:
(Number) Временная метка UNIX в мс
Time.timestampToTicks(62135596900000) // Вернет 100000
Time.leapYearsBeetwen(yearStart,yearEnd)
Функция для нахождения кол-ва високосных дней(лет) в указанном промежутке лет
Параметры:
- yearStart (Number) - Начальный год (от 0 до 9999)
- yearEnd (Number) - Конечный год (от 0 до 9999)
Возврат:
(Number) Кол-во високосных дней в промежутке между yearStart и yearEnd не включая yearEnd если он високосный
Time.leapYearsBeetwen(2000,2022) // Вернет 5
Time.leapYearsBeetwen(2000,2020) // Вернет 4
Time.parseISO(str)
Функция для получения ticks из временной строки в формате ISO
Параметры:
- str (String) - Строка времени в формате ISO
Возврат:
(Number) ticks метка времени
console.log(Time.parseISO('2024-02-18T15:21:56.491+0000')) //Вывод: 63843866516491
Поля объектов Time
timestamp (Number)(getter) - Временная метка Unix в мс
ticks (Number)(getter) - Кол-во миллисекунд прошедших с 1 января 1года н.э.
millis (Number)(getter) - Миллисекунды от 0 до 999
seconds (Number)(getter) - Секунды от 0 до 59
minutes (Number)(getter) - Минуты от 0 до 59
hours (Number)(getter) - Часы от 0 до 23
decimalSeconds (Number)(getter) - Секунды с дробной частью
decimalMinutes (Number)(getter) - Минуты с дробной частью
decimalHours (Number)(getter) - Часы с дробной частью
day (Number)(getter) - день месяца
wDay (Number)(getter) - день недели от 1 до 7
yDay (Number)(getter) - день года от 1 до 365(366)
month (Number)(getter) - Номер месяца от 1 до 12
year (Number)(getter) - Текущий год
isLeap (Boolean)(getter) - Логическое значение указывающее является ли текущий год високосным
tz (Number)(getter) - Часовой пояс в числовом формате
fullTz (Object)(getter) - Часовой пояс в виде объекта временной зоны
Функции объектов Time
add(timeObj)
Функция для сложения дат, при использовании данной функции можно получить результат отличный от ожидаемого, т.к складываются временные метки а не сама дата.
Параметры:
- timeObj (Number | Time | Date | String | Object) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка UNIX для сложения с текущей датой
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = Time.create(2000,1,1) // Время соответствующее 01.01.2000 00:00:00
let time2 = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.add(time2)
console.log(time.toISO()) // Вывод: 3968-12-31T00:00:00.000+0000
diff(timeObj)
Функция для вычитания дат
Параметры:
- timeObj (Number | Time | Date | String) - (Number | Time | Date | String | Object) - Объект Time,Date, строка времени, объект содержащий информацию о дате или метка UNIX для вычитания из текущей даты
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.diff(0) // Метка Unix равная 0 это так же 1970г
console.log(time.toISO()) // Вывод: 0001-01-01T00:00:00.000+0000
addSeconds(seconds)
Функция для сложения и вычитания секунд (для вычитания используйте отрицательные значения)
Параметры:
- seconds (Number) - Кол-во секунд для прибавления/вычитания
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.addSeconds(3600) // 3600сек = 1час
console.log(time.toISO()) // Вывод: 1970-01-01T01:00:00.000+0000
addMinutes(minutes)
Функция для сложения и вычитания минут (для вычитания используйте отрицательные значения)
Параметры:
- minutes (Number) - Кол-во минут для прибавления/вычитания
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.addMinutes(60)
console.log(time.toISO()) // Вывод: 1970-01-01T01:00:00.000+0000
addHours(hours)
Функция для сложения и вычитания часов (для вычитания используйте отрицательные значения)
Параметры:
- hours (Number) - Кол-во часов для прибавления/вычитания
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.addHours(1)
console.log(time.toISO()) // Вывод: 1970-01-01T01:00:00.000+0000
addDays(days)
Функция для сложения и вычитания дней (для вычитания используйте отрицательные значения)
Параметры:
- days (Number) - Кол-во дней для прибавления/вычитания
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.addDay(1)
console.log(time.toISO()) // Вывод: 1970-01-02T00:00:00.000+0000
addMonth(months)
Функция для сложения и вычитания месяцев (для вычитания используйте отрицательные значения)
Параметры:
- months (Number) - Кол-во месяцев для прибавления/вычитания
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.addMonth(12)
console.log(time.toISO()) // Вывод: 1971-01-01T00:00:00.000+0000
addYears(years)
Функция для сложения и вычитания лет (для вычитания используйте отрицательные значения)
Параметры:
- years (Number) - Кол-во лет для прибавления/вычитания
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.addYear(12)
console.log(time.toISO()) // Вывод: 1982-01-01T00:00:00.000+0000
getMonthString(locale)
Функция для получения наименования текущего месяца
Параметры:
- locale (String)(не обязательный) - Параметр локализации (по умолчанию - ru)
Возврат:
(String) Строка с наименованием месяца
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
console.log(time.getMonthString()) // Вывод: Январь
getWeekDaysString(locale)
Функция для получения наименования текущего дня недели
Параметры:
- locale (String)(не обязательный) - Параметр локализации (по умолчанию - ru)
Возврат:
(String) Строка с наименованием дня недели
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
console.log(time.getWeekDaysString()) // Вывод: Четверг
getMonthDayCount()
Функция для получения кол-ва дней в месяце текущего объекта даты
Возврат:
(Number) Кол-во дней в месяце
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
console.log(time.getMonthDayCount()) // Вывод: 31
update()
Функция для обновления объекта до текущего времени
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.update() // Время соответствующее текущему
setTime(hours,minutes,seconds,milliseconds)
Функция установки времени для текущего объекта Time. Параметры можно устанавливать выборочно, у всех значение по умолчанию null
Параметры:
- hours (Number)(не обязательный) - Часы от 0 до 23
- minutes (Number)(не обязательный) - Минуты от 0 до 59
- seconds (Number)(не обязательный) - Секунды от 0 до 59
- milliseconds (Number)(не обязательный) - Миллисекунды от 0 до 999
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.setTime(22,10,15,999) // Устанавливаем время 22:10:15.999
console.log(time.toISO()) // Вывод: 1970-01-01T22:10:15.999+0000
setDate(day,month,year)
Функция установки даты для текущего объекта Time. Параметры можно устанавливать выборочно, у всех значение по умолчанию null
Если установить не существующую дату (например 30 февраля), то день останется прежним если он корректно подходит к заданному месяцу, в противном случае день будет установлен на 1 число месяца
Параметры:
- day (Number)(не обязательный) - День в зависимости от месяца от 1 до 31
- month (Number)(не обязательный) - Месяц от 1 до 12
- year (Number)(не обязательный) - Год в диапазоне от 1 до 9999
Возврат:
(Time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.setDate(10,5,2022) // Устанавливаем время 22:10:15.999
console.log(time.toISO()) // Вывод: 2022-05-10T00:00:00.000+0000
time.setDate(30,2,2022) // Ставим не существующую дату
console.log(time.toISO()) // Вывод: 2022-02-10T00:00:00.000+0000 | 10 число, которое было установлено ранее, корректно для февраля
setTz(tz)
Функция установки текущей временной зоны по умолчанию, для установки корректной временной зоны используйте коллекцию Time.TIMEZONE
Параметры:
- tz (Number) - число соответствующее сдвигу в часах
Возврат:
(time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.setTz(Time.TIMEZONE.plus_6) // Устанавливаем часовой пояс UTC+6
console.log(time.toISO()) // Вывод: 1970-01-01T06:00:00.000+0600
startDay()
Функция устанавливающая время в начало дня - 00:00:00.000. Если установлен часовой пояс отличный от UTC-0, будет производится корректировка фактического времени
Возврат:
(time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.setTz(Time.TIMEZONE.plus_6) // Устанавливаем часовой пояс UTC+6
console.log(time.startDay().toISO()) // Вывод: 1970-01-01T00:00:00.000+0600
endDay()
Функция устанавливающая время в конец дня - 23:59:59.999. Если установлен часовой пояс отличный от UTC-0, будет производится корректировка фактического времени
Возврат:
(time) возвращает текущий объект Time с обновленными значениями (можно использовать цепочку вызовов)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
time.setTz(Time.TIMEZONE.plus_6) // Устанавливаем часовой пояс UTC+6
console.log(time.endDay().toISO()) // Вывод: 1970-01-01T23:59:59.999+0600
equals(time, isEqMillis)
Функция для сравнения двух объектов Time с точностью до секунд или миллисекунд
Параметры:
- time (Time) - объект Time для сравнения
- isEqMillis (Boolean)(не обязательный) - параметр указывающий учитывать ли миллисекунды при сравнении (по умолчанию false)
Возврат:
(Boolean) возвращает результат сравнения (true - если равны, false - не равны)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
let time2 = new Time(1000) // Время соответствующее 01.01.1970 00:00:01
console.log(time.equals(time2)) // Вывод: false
equalsDate(time)
Функция для сравнения двух объектов Time по дате
Параметры:
- time (Time) - объект Time для сравнения
Возврат:
(Boolean) возвращает результат сравнения (true - если равны, false - не равны)
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
let time2 = new Time(1000000) // Время соответствующее 01.01.1970 16:40:00
console.log(time.equalsDate(time2)) // Вывод: true
equalsTime(time, isEqMillis)
Функция для сравнения двух объектов Time по времени без учета даты
Параметры:
- time (Time) - объект Time для сравнения
- isEqMillis (Boolean)(не обязательный) - параметр указывающий учитывать ли миллисекунды при сравнении (по умолчанию false)
Возврат:
(Boolean) возвращает результат сравнения (true - если равны, false - не равны)
let time = Time.create(2022,1,15,22,10) // Время соответствующее 15.01.2022 22:10:00
let time2 = Time.create(2023,5,6,22,10) // Время соответствующее 06.05.2023 22:10:00
console.log(time.equalsTime(time2)) // Вывод: true
isBetween(time1, time2)
Функция для выявления, находится ли текущий объект Time в промежутке между time1 и time2
Параметры:
- time1 (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
- time2 (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Boolean) Возвращает логическое значение
let time = Time.create(2022,1,15,22,10) // Время соответствующее 15.01.2022 22:10:00
let time2 = Time.create(2026,5,6,22,10) // Время соответствующее 06.05.2026 22:10:00
let time3 = new Time() // Время соответствующее 18.02.2024
console.log(time3.isBetween(time,time2)) // Вывод: true
secondsBetween(time)
Функция для получения кол-ва секунд прошедших между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во секунд прошедших между датами
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
let time2 = new Time(100000) // Время соответствующее 01.01.1970 00:01:40
console.log(time.secondsBetween(time2)) // Вывод: 100
minutesBetween(time)
Функция для получения кол-ва минут прошедших между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во минут прошедших между датами
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
let time2 = new Time(100000) // Время соответствующее 01.01.1970 00:01:40
console.log(time.minutesBetween(time2)) // Вывод: 1
hoursBetween(time)
Функция для получения кол-ва часов прошедших между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во часов прошедших между датами
let time = new Time(0) // Время соответствующее 01.01.1970 00:00:00
let time2 = new Time(54000000) // Время соответствующее 01.01.1970 15:00:00
console.log(time.hoursBetween(time2)) // Вывод: 15
daysBetween(time)
Функция для получения кол-ва дней прошедших между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во дней прошедших между датами
let time = Time.create(2022,1,1) // Время соответствующее 01.01.2022 00:00:00
let time2 = Time.create(2022,1,15) // Время соответствующее 15.01.2022 15:00:00
console.log(time.daysBetween(time2)) // Вывод: 14
weeksBetween(time)
Функция для получения кол-ва прошедших недель между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во недель прошедших между датами
let time = Time.create(2022,1,1) // Время соответствующее 01.01.2022 00:00:00
let time2 = Time.create(2022,1,15) // Время соответствующее 15.01.2022 15:00:00
console.log(time.weeksBetween(time2)) // Вывод: 2
monthBetween(time)
Функция для получения кол-ва месяцев прошедших между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во месяцев прошедших между датами
let time = Time.create(2022,1,1) // Время соответствующее 01.01.2022 00:00:00
let time2 = Time.create(2022,3,15) // Время соответствующее 15.03.2022 15:00:00
console.log(time.monthBetween(time2)) // Вывод: 2
yearsBetween(time)
Функция для получения кол-ва лет прошедших между двумя временными метками, всегда возвращает целое положительное число
Параметры:
- time (Object | Number | Time | Date | string) - Объект Time, Date, строка времени, объект содержащий информацию о дате или метка времени UNIX
Возврат:
(Number) возвращает кол-во месяцев прошедших между датами
let time = Time.create(2020,1,1) // Время соответствующее 01.01.2020 00:00:00
let time2 = Time.create(2022,3,15) // Время соответствующее 15.03.2022 15:00:00
console.log(time.yearsBetween(time2)) // Вывод: 2
split(splitter, toDate, descending, limit)
Функция для разбиения текущего Time объекта на несколько временных меток
Параметры:
splitter (Splitter | Number) - Кол-во отрезков на которые нужно разбить, либо объект настроек.
Объект типа Splitter может содержать следующие поля:
- days (Number) - Кол-во дней
- hours (Number) - Кол-во часов
- minutes (Number) - Кол-во минут
- seconds (Number) - Кол-во секунд
- ticks (Number) - Кол-во тиков(миллисекунд)
- lastReturn (Boolean) - Параметр указывающий нужно ли возвращать последнюю временную метку если она будет за границами диапазона
При использовании объекта, все свойства не имеют ограничений по кол-ву и шаг разбиения расчитывается в результате сложения всех числовых свойств. Например: используя 120 дней и 60 часов получим 122д. 12ч.
toDate (Time | null)(не обязатедьный) - Второй объект Time для ограничения периода разбиения, (в этом случае начальной меткой времени считается наименьшая, чтобы сменить порядок используйте descending). Если передано null то время будет разбито на части начиная с 01.01.0001 числа по текущую метку времени.
descending (Boolean)(не обязатедьный) - Логический параметр указывающий направление разбиения, по умолчанию - false (от меньшего к большему)
limit (Number)(не обязатедьный) - Ограничение splitter'а по кол-ву разбиений
Возврат:
(Array<Time>) возвращает массив временных меток, (в случае если splitter указан как число меньше 2 или диапаон разбиения по времени окажется больше чем диапазон времени между текущим Time и toDate - вернет пустой массив)
let time = Time.create(2020,1,1) // Время соответствующее 01.01.2020 00:00:00
let time2 = Time.create(2021,1,1) // Время соответствующее 01.01.2021 15:00:00
let times = time.split(6,time2)
for(let t of times){
console.log(t.toISO())
}
//Результат вывода:
2020-01-01T00:00:00.000+0000
2020-03-14T04:48:00.000+0000
2020-05-26T09:36:00.000+0000
2020-08-07T14:24:00.000+0000
2020-10-19T19:12:00.000+0000
2021-01-01T00:00:00.000+0000
formatLocale(locale, options)
Функция для форматирования времени с учетом локали для текущего объекта Time. Поддерживает все параметры из Intl.DateTimeFormat. Временная зона options.timeZone может быть указана как объект Time.TIMEZONE, цифра или строка
Параметры:
locale (String) - наименование локали
options (Object) - объект параметров из Intl.DateTimeFormat
Возврат:
(String) возвращает отформатированную строку
let t = new Time()
console.log(t.formatLocale('en', {dateStyle: 'full', timeStyle: 'long'})) // Вывод: Sunday, February 18, 2024 at 2:02:12 PM GMT
format(pattern)
Функция для свободного форматирования строки с использованием текущего объекта Time
Для того чтобы использовать вставку данных из объекта Time, в строке необходимо использовать паттерн - @{спец.символы}
На данный момент функция поддерживает следующие обозначения в шаблоне:
- Y - год в формате YYYY
- y - год в формате YY
- D - день месяца (с добавочными нулями)
- М - месяц (с добавочными нулями)
- H - часы в 24-часовом формате(с добавочными нулями)
- h - часы в 12-часовом формате (с добавочными нулями)
- m - минуты (с добавочными нулями)
- S - секунды (с добавочными нулями)
- s - миллисекунды (с добавочными нулями)
- Th - Часы смещения по временной зоне
- Tp - Минуты смещения по временной зоне
- Tz - Часы и минуты смещения по временной зоне
Параметры:
- pattern (String) - входной шаблон строки
Возврат:
(String) возвращает отформатированную строку
let time = Time.create(2022,1,1,10,45) // Время соответствующее 01.01.2022 10:45:00
console.log(time.format('Время публикации - @{H:m}')) // Вывод: Время публикации - 10:45
toISO(format)
Функция для получения строки времени в формате ISO
Параметры:
- format (String)(не обязательный) - входной шаблон формата ISO, (поддерживает только шаблоны из Time.ISO_FORMATS)
Возврат:
(String) возвращает отформатированную строку
let time = Time.create(2022,1,1,10,45) // Время соответствующее 01.01.2022 10:45:00
console.log(time.toISO()) // Вывод: 2022-01-01T10:45:00.000+0000
convertToDate()
Функция конвертации текущего объекта Time в Date
Возврат:
(Date) возвращает стандартный объект Date JS
let time = new Time()
let date = time.convertToDate() //объект Date
toString()
Функция преобразования текущего времени в строку, (по умолчанию используется toISO())
Возврат:
(String) возвращает строковое представление даты в формате ISO
let time = new Time()
console.log(`${time}`) //Вывод: 2024-02-18T20:37:45.130+0000
valueOf()
Функция для преобразования объекта Time в примитив Number, т.е объекты можно складывать и вычитать используя арифметические операторы, при этом используется приведение к ticks
let time = Time.create(1,1,1,10) // Время соответствующее 01.01.0001 10:00:00
let time2 = Time.create(1,1,1,16) // Время соответствующее 01.01.0001 16:00:00
console.log(time+time2) // 93600000