1. JavaScript / Говнокод #17898

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    var times, source_date,
          date = "20.11.2014";
    
    if (date) {
                times = date.split('.');
    
                source_date = new Date();
                source_date.setFullYear(parseInt(times[2]));
                source_date.setMonth(parseInt(times[1]) - 1);
    
                source_date.setDate(parseInt(times[0]));
    }
    
    return source_date ;

    Запостил: darkartur, 31 Марта 2015

    Комментарии (23) RSS

    • new Date("20.11.2014".replace(/(\d+)\.(\d+)\.(\d+)/, "$3-$2-$1T00:00:00Z"))
      Ответить
      • parseInt(times[1]) - 1 /* т.к. месяца от 0 (Янв) до 11 (Дек) */
        Как сделать $2-1 в регулярке?
        Ответить
        • >>$2-1

          Поясните хотелку
          Ответить
          • Заменить 12 на 11 и т.п.
            Ответить
            • Ну такое не регулярками делается

              Точнее именно эта часть. Находим места, вытаскиваем группы, конвертим в числа, вычисляем че хотим, и засовываем обратно
              Ответить
              • Было бы круто что-то вроде :
                new Date('20.11.2014'.replace(/(\d+)\.(\d+)\.(\d+)/, '$3-'+(parseInt('$2')-1)+'-$1T00:00:00Z'))

                Моё решение :
                '20.11.2014'.replace(/(\d+)\.(\d+)\.(\d+)/,function($0,$1,$2,$3){return $3+'-'+(parseInt($2)-1)+'-'+$1+'T00:00:00Z';})
                Ответить
                • Ну в том же жс, емнип, вместо строки для замены можно передать функцию.

                  P.S. А, в нижнем примере её и передали.
                  Ответить
                • Наиболее короткий вариант : '20.11.2014'.replace(/(\d+)\.(\d+)\.(\d+)/, '$3-'+(parseInt(RegExp.$2)-1)+'-$1T00:00:00Z')
                  Ответить
                  • Повторить 2 раза.
                    Ответить
                  • > eval('20.11.2014'.replace(/(\d+)\.(\d+)\.(\d+)/, 'new Date("$3-"+(parseInt("$2")-1)+"-$1T00:00:00Z")'));
                    eval('20.11.2014'.replace(/(\d+)\.(\d+)\.(\d+)/, 'new Date("$3-"+(parseInt("$2")-1)+"-$1T00:00:00Z")'));
                    Mon Oct 20 2014 03:00:00 GMT+0300 (IDT)
                    Ответить
        • Неа, там же строка. Просто текущий формат конвертится в ISO'шный и скармливается конструктору.
          Ответить
      • new Date("20.11.2014" + "T00:00:00Z")
        Ответить
      • Кстати, IE даже этот формат не жрёт, насколько я помню.
        Ответить
        • Оффтоп

          У мс теперь есть новый браузер - проект спартан. И только я подумал, что не будет больше уебишной буквы Е, эти суки переименовали его в edge

          http://www.3dnews.ru/913557
          Ответить
          • > спартан
            Со спартанским интерфейсом в духе lynx?
            Ответить
            • не знаю, я 10 снес, посмотреть не могу. по идее - квадратный как небо, как Аллах
              Ответить
          • По моему им теперь создателю Сонника надо отвалить за воровство концепта.
            Ответить
          • Кстати, кто-нибудь уже довёл логотип до буквы г? Думаю, это самый очевидный ход русского человека.
            http://itmag.es/4FsPB
            Ответить
            • Лично мне хочется дорисовать глаз и типо он говорит "какая скорость, братюнь?"
              Ответить

    Добавить комментарий