На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU, ANDLL, fatalist
  
> Вычисление даты
    Коллеги, c JS не работал. Пытаюсь вычесть из даты дату и вернуть разницу как число в секундах. Что-то не работает:
    от произвольной даты отнимаем сегодня.
    ExpandedWrap disabled
      Math.ceil((Date("29/11/2017").getTime()-Date().getTime())*1000 )
      Пользуйся этим https://momentjs.com/
        Астарот
        Без компонент как-то можно?
          Дядь, я ж не настоящий сварщик :) Работа с датой и временем - зверски заморочная штука в любых языках, поэтому и создают заточенные под это библиотеки. В общем лучше возьми момент.жс, сэкономишь много нервов.
            Какое IDE для JS посоветуешь, что бы потыкаться без заморочек можно было?
              Цитата ^D^ima @
              Какое IDE для JS посоветуешь, что бы потыкаться без заморочек можно было?

              Без заморочек и notepad++ хватит :) А так мейнстрим это web storm, как я понимаю.
                ExpandedWrap disabled
                  Math.ceil(((new Date("2017-11-29")).getTime() - (new Date()).getTime()) / 1000)
                  Цитата AVA12 @
                  new

                  семен семеныч....

                  Спасибо.

                  А как к типу строка привести?

                  Добавлено
                  Вместо
                  ExpandedWrap disabled
                    div class="example" id="DateCountdown" data-timer="1234567">

                  вставляю:
                  ExpandedWrap disabled
                    div class="example" id="DateCountdown" data-timer=String(Math.ceil(((new Date("2017-11-29")).getTime() - (new Date()).getTime()) / 1000))>

                  не пашет, хотя через алерт выводит.
                  ExpandedWrap disabled
                    alert(String(Math.ceil(((new Date("2017-11-29")).getTime() - (new Date()).getTime()) / 1000)))


                  Это счетчик сколько осталось дней до события. Что я делаю не так? :wall:
                    К строке можно привести обычным для JS способом - методы .toString() и .toLocaleString(). Но они плохие, лучше использовать .toISOString(). А вообще есть много путей, читай мануал от производителя.
                      Так? если да, то ошибку выдает
                      ExpandedWrap disabled
                        alert(
                         
                          (Math.ceil(((new Date("2017-11-29")).getTime() - (new Date()).getTime()) / 1000)).toISOString()
                         
                        )
                         
                         
                         
                        /*
                        Exception: TypeError: Math.ceil(...).toISOString is not a function
                        @Scratchpad/2:13:4
                        */
                        Цитата
                        div class="example" id="DateCountdown" data-timer=String(Math.ceil(((new Date("2017-11-29")).getTime() - (new Date()).getTime()) / 1000))>

                        Э-э-э... Не пойму, ты пытаешься вставить неэкранированный код на языке программирования JS туда, где ожидается экранированный параметр языка разметки HTML? Это работать не должно и не будет. Будет работать что-нибудь вроде:
                        ExpandedWrap disabled
                          <script>
                          document.getElementById('DateCountdown').dataset.timer = Math.ceil(((new Date("2017-11-29")).getTime() - (new Date()).getTime()) / 1000)
                          </script>

                        P. S. Я думал, ты хочешь дату привести к строке. В общем случае используй String(значение), хотя в случае с DOM это необязательно.

                        P. P. S. А вообще, лучше найми Web-программиста. Самый эффективный способ.
                          Цитата AVA12 @
                          где ожидается экранированный параметр языка разметки HTML?

                          походу да... :D спасибо
                            Только так и не работает :wall:
                            пробовал ещё так так
                            ExpandedWrap disabled
                              <script>
                              document.getElementsByTagName('DateCountdown').dataset.data-timer = "123456"
                              </script>

                            и так
                            ExpandedWrap disabled
                              <script>
                              document.getElementById('DateCountdown').dataset.data-timer = "123456"
                              </script>



                            Цитата AVA12 @
                            .timer

                            Так тоже не работает. Что такое .timer? Это ошибка, а должно быть .data-timer?
                              Цитата ^D^ima @
                              Какое IDE для JS посоветуешь, что бы потыкаться без заморочек можно было?

                              Atom+Node
                                VS Code. пока так.
                                  Цитата ^D^ima @
                                  Только так и не работает :wall:
                                  пробовал ещё так так
                                  ExpandedWrap disabled
                                    <script>
                                    document.getElementsByTagName('DateCountdown').dataset.data-timer = "123456"
                                    </script>

                                  и так
                                  ExpandedWrap disabled
                                    <script>
                                    document.getElementById('DateCountdown').dataset.data-timer = "123456"
                                    </script>

                                  Цитата AVA12 @
                                  .timer

                                  Так тоже не работает. Что такое .timer? Это ошибка, а должно быть .data-timer?

                                  ExpandedWrap disabled
                                    var t = Math.ceil((new Date("29/11/2017").getTime()-new Date().getTime())*1000 );
                                    var dateCountdown = document.getElementById('DateCountdown');
                                    dateCountdown.setAttrubite('data-timer', t);
                                  Сообщение отредактировано: Cfon -
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0382 ]   [ 16 queries used ]   [ Generated: 28.03.24, 09:45 GMT ]