wmakeev/moysklad

View on GitHub
src/tools/getTimeString.js

Summary

Maintainability
B
6 hrs
Test Coverage
A
100%
'use strict'

const getTimezoneShift = require('./getTimezoneShift')

const timezoneFix = getTimezoneShift()

/** Временная зона API МойСклад (часовой пояс в мс) */
const mskTimezone = +3 * 60 * 60 * 1000 // ms

function leftPad1(num) {
  return `0${num}`.slice(-2)
}

function leftPad2(num) {
  return `00${num}`.slice(-3)
}

/**
 * Возвращает дату для фильтра в часовом поясе Москвы
 *
 * @param {Date | number} date Конвертируемая дата
 * @param {Boolean} includeMs Необходимо ли включить миллисекунды в дату
 * @returns {string} Дата ввиде строки
 */
module.exports = function getTimeString(date, includeMs) {
  const mskTime = new Date(+date + mskTimezone + timezoneFix)

  const milliseconds = mskTime.getUTCMilliseconds()

  // 2000-01-01 01:00:00.123
  return [
    mskTime.getUTCFullYear(),
    '-',
    leftPad1(mskTime.getUTCMonth() + 1),
    '-',
    leftPad1(mskTime.getUTCDate()),
    ' ',
    leftPad1(mskTime.getUTCHours()),
    ':',
    leftPad1(mskTime.getUTCMinutes()),
    ':',
    leftPad1(mskTime.getUTCSeconds()),
    includeMs ? `.${leftPad2(milliseconds)}` : ''
  ].join('')
}