2016-06-02 4 views
0

Ich habe eine Startstunde in Zeichenfolge angegeben.Minuten zwischen einem Datum und einer Zeichenfolge Zeit

let opens = '08:00'; 

Ich möchte den Unterschied in Minuten für verschiedene Daten messen.

let date1 = moment('1945.10.20 17:30'); 
let date2 = moment('1970.01.08 12:00'); 
// should result 570 (9.5h) and 240 (4h) 

Ich war naiv genug

moment(opens, 'HH:mm').diff(date1, 'm'); 

zu versuchen, aber ich erkennen, dass es ein Datum für den aktuellen Tag Stunde machen würde.

+2

Sie müssten eine Datetime mit dem gleichen Datum (Tag, Monat und Jahr) wie die, gegen die Sie sich wenden möchten, erstellen und dann Ihre Diff-Prüfung durchführen. – ManoDestra

+0

Warum fügen Sie dem Mix ein Datum hinzu? Wenn Sie nur den Unterschied zwischen der aktuellen Zeit und einer gewissen Öffnungszeit sehen möchten, würde ich versuchen, ohne Momentjs – Jieter

+0

Mit welchem ​​Datum möchten Sie anfangen/vergleichen mit? – IMTheNachoMan

Antwort

2

einen Moment Objekt am selben Tag, aber mit den Stunden Sie wollen. Von dort aus den Vergleich. Wenn Sie das Format Öffnet wissen immer HH:mm sein wird, dann können Sie dies tun:

let opens = '08:00'; 
let opensTime = moment(opens, 'HH:mm'); 
let date1 = moment('1945.10.20 17:30', 'YYYY.MM.DD HH:mm'); 
let openDate1 = date1.clone().set({ 
    hour: opensTime.hour(), 
    minute: opensTime.minute() 
}); 

Dann vergleichen:

date1.diff(openDate1, 'm') === 570; 

Alternativ könnten Sie tun, nur eine Spaltung auf opens-opens.split(":") -nach zu bekommen Stunde und Minute.

0

Wenn ich das richtig lese, möchten Sie die Stunden auf Ihrem Datumsobjekt mit 8 Uhr morgens vergleichen.

Javascript hat getHours() und getMinutes() von Datum Objekt.

Hence you can do date.getHours() - 8, and date1.getMinutes() 
0

Können Sie die opens Variable ändern?

let date1 = moment(new Date('1945.10.20 17:30')); 
 
let date2 = moment(new Date('1970.01.08 12:00')); 
 

 
function timeDifference(end, opensHour, opensMinute) { 
 
    var start = end.clone().set({ 
 
    "hour": opensHour, 
 
    "minute": opensMinute 
 
    }); 
 

 
    return { 
 
    "start": start, 
 
    "end": end, 
 
    "difference": end.diff(start, "minutes") 
 
    }; 
 
} 
 

 
console.log(timeDifference(date1, 8, 0)); 
 
console.log(timeDifference(date2, 8, 0));
<script src="http://momentjs.com/downloads/moment.js"></script>

Im Wesentlichen, was um Sie tun müssen, wenn Sie die Enddaten haben, einen neuen Moment mit dem gleichen Datum erstellen, aber Ihre opens Startzeit. Dann mach den Unterschied.

Oder könnten Sie auch subtrahieren:

let opens = "08:00"; 
 
let date1 = moment(new Date('1945.10.20 17:30')); 
 
let date2 = moment(new Date('1970.01.08 12:00')); 
 

 
function timeDifference(opens, end) { 
 
    // get the start 
 
    var start = moment(opens, "HH:mm"); 
 
    
 
    // find how many minutes from midnight the start is 
 
    var startFromMidnight = start.diff(start.clone().startOf("day"), "minutes"); 
 
    
 
    // find how many minutes from midnight the end is 
 
    var endFromMidnight = end.diff(end.clone().startOf("day"), "minutes"); 
 
    
 
    // subtract the two to find the difference 
 
    return endFromMidnight - startFromMidnight; 
 
} 
 

 
console.log(timeDifference("08:00", date1)); 
 
console.log(timeDifference("08:00", date2));
<script src="http://momentjs.com/downloads/moment.js"></script>

Verwandte Themen