2013-07-03 4 views
3

var time="18:15:00"Добавить 15 минут в строку в JavaScript

Я получаю время в 24-часовом формате, как выше строки. Мне нужно добавить 15 минут, как я могу добавить. Без использования substring().

var time - строка не date object. Искать в google, но не получить его.

+3

* Без использования подстроки функция * почему это ограничение? – alex

+0

Преобразуйте его в дату, добавьте 15 минут, конвертируйте обратно в строку? –

+0

Как вы получаете эту строку в первую очередь? – Uooo

ответ

10

Вы можете сделать так:

function addMinutes(time, minsToAdd) { 
    function D(J){ return (J<10? '0':'') + J;}; 
    var piece = time.split(':'); 
    var mins = piece[0]*60 + +piece[1] + +minsToAdd; 

    return D(mins%(24*60)/60 | 0) + ':' + D(mins%60); 
} 

addMinutes('18:15:00', '20'); // '18:35' 

DEMO Plunker

+0

dado для вычитания минут – John

+0

Да, для этого просто сделайте так: var mins = шт [0] * 60 + + шт [1] + -minsToAdd; 'вы можете играть с plunker –

-2

Сначала преобразовать строку в объект даты следующим образом:

var d = new Date("18:15:00"); 

Затем, используя первую дату, создать новую дату и добавьте 15 минут (в миллисекундах):

var e = new Date(d.getTime() + 15*60000); 

You должен иметь возможность использовать e, чтобы вернуть нужную вам строку.

+3

'new Date (« 18:15:00 »);' > * Неверная дата * (по крайней мере, для меня в Chrome). – alex

+0

Также неверная дата в консоли Firebug. – user1063287

0

Dhavals ответ очень хорошо, но я предпочитаю простой код & однострочных.
Поэтому я хотел бы использовать следующее:

var minsToAdd = 15; 
var time = "15:57"; 
var newTime = new Date(new Date("1970/01/01 " + time).getTime() + minsToAdd * 60000).toLocaleTimeString('en-UK', { hour: '2-digit', minute: '2-digit', hour12: false }); 

(Если вам нужны секунды, просто добавьте second: '2-digit' в параметры форматирования.)

Дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString

Смежные вопросы