Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.07.2022, 18:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

NovichokJS,
нельзя изменить день, можно только дату!!!
Ответить с цитированием
  #12 (permalink)  
Старый 14.07.2022, 18:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

voraa,
Ответить с цитированием
  #13 (permalink)  
Старый 14.07.2022, 18:39
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Voraa, спасибо, но мне надо преобразовать один момент в моем коде только. Мне нужно формат просто задать правильный, выше я спросил это у Рони уже.
Ответить с цитированием
  #14 (permalink)  
Старый 14.07.2022, 18:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

NovichokJS,
... исправленный вариант со switch
const getNewDate = initValue => {
    const newValue = {
    add(dateInterval, number) {
      switch (dateInterval) {
        case 'years':
          initValue.setFullYear(initValue.getFullYear() + number);
          break;
        case 'months':
          initValue.setMonth(initValue.getMonth() + number);
          break;
        case 'days':
          initValue.setDate(initValue.getDate() + number);
          break;
        case 'hours':
          initValue.setHours(initValue.getHours() + number);
          break;
        case 'minutes':
          initValue.setMinutes(initValue.getMinutes() + number);
          break;
        case 'seconds':
          initValue.setSeconds(initValue.getSeconds() + number);
          break;
        case 'milliseconds':
          initValue.setMilliseconds(initValue.getMilliseconds() + number);
          break;
      }
      return this;
    },

    subtract(dateInterval, number) {
      switch (dateInterval) {
        case 'years':
          initValue.setFullYear(initValue.getFullYear() - number);
          break;
        case 'months':
          initValue.setMonth(initValue.getMonth() - number);
          break;
        case 'days':
          initValue.setDate(initValue.getDate() - number);
          break;
        case 'hours':
          initValue.setHours(initValue.getHours() - number);
          break;
        case 'minutes':
          initValue.setMinutes(initValue.getMinutes() - number);
          break;
        case 'seconds':
          initValue.setSeconds(initValue.getSeconds() - number);
          break;
        case 'milliseconds':
          initValue.setMilliseconds(initValue.getMilliseconds() - number);
          break;
      }
      return this;
    },


    result() {
      return initValue;
    },
  };
  return newValue;
};

const res = getNewDate(new Date(2020, 0, 7, 17, 17, 17))
  .add('minutes', 2)
  .add('days', 8)
  .subtract('years', 1)
  .result();
// Output: ...Jan 15 2019 17:19:17.....

console.log(res);
Ответить с цитированием
  #15 (permalink)  
Старый 14.07.2022, 18:41
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
NovichokJS,
нельзя изменить день, можно только дату!!!
ок, мне просто надо чтоб в таком формате выводилась
Jan 15 2019 17:19:17...

Потому что сейчас выводится вот в таком:
2019-01-10T15:19:17.000Z
Ответить с цитированием
  #16 (permalink)  
Старый 14.07.2022, 18:44
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
NovichokJS,
... исправленный вариант со switch
const getNewDate = initValue => {
    const newValue = {
    add(dateInterval, number) {
      switch (dateInterval) {
        case 'years':
          initValue.setFullYear(initValue.getFullYear() + number);
          break;
        case 'months':
          initValue.setMonth(initValue.getMonth() + number);
          break;
        case 'days':
          initValue.setDate(initValue.getDate() + number);
          break;
        case 'hours':
          initValue.setHours(initValue.getHours() + number);
          break;
        case 'minutes':
          initValue.setMinutes(initValue.getMinutes() + number);
          break;
        case 'seconds':
          initValue.setSeconds(initValue.getSeconds() + number);
          break;
        case 'milliseconds':
          initValue.setMilliseconds(initValue.getMilliseconds() + number);
          break;
      }
      return this;
    },

    subtract(dateInterval, number) {
      switch (dateInterval) {
        case 'years':
          initValue.setFullYear(initValue.getFullYear() - number);
          break;
        case 'months':
          initValue.setMonth(initValue.getMonth() - number);
          break;
        case 'days':
          initValue.setDate(initValue.getDate() - number);
          break;
        case 'hours':
          initValue.setHours(initValue.getHours() - number);
          break;
        case 'minutes':
          initValue.setMinutes(initValue.getMinutes() - number);
          break;
        case 'seconds':
          initValue.setSeconds(initValue.getSeconds() - number);
          break;
        case 'milliseconds':
          initValue.setMilliseconds(initValue.getMilliseconds() - number);
          break;
      }
      return this;
    },


    result() {
      return initValue;
    },
  };
  return newValue;
};

const res = getNewDate(new Date(2020, 0, 7, 17, 17, 17))
  .add('minutes', 2)
  .add('days', 8)
  .subtract('years', 1)
  .result();
// Output: ...Jan 15 2019 17:19:17.....

console.log(res);
я понял, я так исправил, но такой вариант возвращает дату в формате
2019-01-15T15:19:17.000Z


Мне же нужно в таком формате:
Jan 15 2019 17:19:17
Ответить с цитированием
  #17 (permalink)  
Старый 14.07.2022, 18:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сообщение от рони
нельзя изменить день, можно только дату!!!
Сообщение от NovichokJS
 resultDate = initValue.setDate(initValue.getDay() - number);
Ответить с цитированием
  #18 (permalink)  
Старый 14.07.2022, 18:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сообщение от NovichokJS
Мне же нужно в таком формате:
Jan 15 2019 17:19:17
https://learn.javascript.ru/intl
const getNewDate = initValue => {
            const newValue = {
                add(dateInterval, number) {
                    switch (dateInterval) {
                        case 'years':
                            initValue.setFullYear(initValue.getFullYear() + number);
                            break;
                        case 'months':
                            initValue.setMonth(initValue.getMonth() + number);
                            break;
                        case 'days':
                            initValue.setDate(initValue.getDate() + number);
                            break;
                        case 'hours':
                            initValue.setHours(initValue.getHours() + number);
                            break;
                        case 'minutes':
                            initValue.setMinutes(initValue.getMinutes() + number);
                            break;
                        case 'seconds':
                            initValue.setSeconds(initValue.getSeconds() + number);
                            break;
                        case 'milliseconds':
                            initValue.setMilliseconds(initValue.getMilliseconds() + number);
                            break;
                    }
                    return this;
                },

                subtract(dateInterval, number) {
                    switch (dateInterval) {
                        case 'years':
                            initValue.setFullYear(initValue.getFullYear() - number);
                            break;
                        case 'months':
                            initValue.setMonth(initValue.getMonth() - number);
                            break;
                        case 'days':
                            initValue.setDate(initValue.getDate() - number);
                            break;
                        case 'hours':
                            initValue.setHours(initValue.getHours() - number);
                            break;
                        case 'minutes':
                            initValue.setMinutes(initValue.getMinutes() - number);
                            break;
                        case 'seconds':
                            initValue.setSeconds(initValue.getSeconds() - number);
                            break;
                        case 'milliseconds':
                            initValue.setMilliseconds(initValue.getMilliseconds() - number);
                            break;
                    }
                    return this;
                },


                result() {
                    let formatter = new Intl.DateTimeFormat("en", {
                        month: "short",
                        year: 'numeric',
                        day: '2-digit',
                        hour: '2-digit',
                        minute: '2-digit',
                        second: '2-digit',
                        hour12: false
                    });

                    return formatter.format(initValue);
                },
            };
            return newValue;
        };

        const res = getNewDate(new Date(2020, 0, 7, 17, 17, 17))
            .add('minutes', 2)
            .add('days', 8)
            .subtract('years', 1)
            .result();
        // Output: ...Jan 15 2019 17:19:17.....

        console.log(res);
Ответить с цитированием
  #19 (permalink)  
Старый 14.07.2022, 19:03
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
ок, у меня сейчас эта переменная resultDate никакой функции не выполняет. Я удалил её с кода и результат не изменился. Мне нужно чтобы входная дата не менялась. Как поправить это?
Ответить с цитированием
  #20 (permalink)  
Старый 14.07.2022, 19:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сообщение от NovichokJS
Мне нужно чтобы входная дата не менялась. Как поправить это?
const getNewDate = initValue => {
            initValue = new Date(initValue);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск