Как преобразовать дату из строки в число! JavaScript

220
09 сентября 2018, 06:00

Помогите решить как оказалось сложную для меня задачу. На странице динамические формируется блок div c span внутри которые содержат текст. Текст - это время в формате пример: 1 ч. 10 мин. На формат я ни как не могу повлиять так как получаю его с другого сервиса. Задача получить общее время из всех что есть в списке, а там может быть разное кол-во. Сам блок я перебираю на элементы и получаю это время, но что делать дальше уже просто не знаю. Уже перебрал множество методов, но всё тщетно. Может кто знает ответ или просто натолкните на мысль.

Пример кода:

$(document).ready(function(){ 
 
  var elem = $("[data-time-f='dtm']"); 
 
  $(elem).each(function(){ 
    console.log($(this).text()); 
  }); 
   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<div id="dtm-time"> 
    <span data-time-f="dtm">1 ч. 10 мин.</span> 
    <span data-time-f="dtm">20 мин.</span> 
    <span data-time-f="dtm">30 мин.</span> 
    <span data-time-f="dtm">1 ч 23 мин.</span> 
    <span data-time-f="dtm">3 ч 42 мин.</span> 
    <span data-time-f="dtm">17 мин.</span> 
</div>

Answer 1

В totalMinute будет общее к-во минут. Думаю трудностей с переводом в строку не возникнет ;)

$(document).ready(function () {
        function getMinuteTime(time) {
            var hour = time.match(/(\d+)\sч/);
            var minute = time.match(/(\d+)\sм/);
            return (hour && hour[1] | 0) * 60 + (minute && minute[1] | 0);
        }
        var elem = $("[data-time-f='dtm']");
        var totalMinute = 0;
        $(elem).each(function () {
            totalMinute += getMinuteTime($(this).text());
        });
    });
Answer 2

Я бы парсил строку и разбивал ее по кусочкам а из кусочков потом собирал дату, нпример

str='1 ч. 10 мин.'
arr = str.split('ч');
hour=arr[0]; // тут у нас часы, рекомендую очистить на всякий случай от всякого мусора
minutes=arr[1]; // а тут останутся минуты, тоже очистить от ненужного

на тот случай если в строке нет часов, можно ввести прсотенькое условие, чтонибудь вроде

 var re = '/ч/gi'; // игнорируем регистр и ищем по всей строке
    var str = ' 10 мин.';
   if(str.replace(re, '')){
// часы есть в строке тогда бьем строка как написано выше если не то строка уже минуты и значит ее нужно лишь очистить от мусора
}
READ ALSO
не работает items и autoWidth в owl-carousel

не работает items и autoWidth в owl-carousel

Проблема заключается в том, что если autoWidth: true, то items не работаетВ чем может быть проблема?

240
EPPlus двухцветный текст

EPPlus двухцветный текст

Возможно ли при помощи EPPlus в одной ячейке создать, например, 2 слова разного цвета?

204
Передача struct по ссылке box/unbox

Передача struct по ссылке box/unbox

разбираюсь с box/unbox, просматриваю свой код на наличие операторов box через ildasmexe

229
Как можно растянуть вложенные элементы ToolBar?

Как можно растянуть вложенные элементы ToolBar?

Как можно растянуть вложенные в ToolBar элементы на всю ширину ToolBar? Чтобы можно было через margin задавать расположение кнопок относительно правого...

244