in dialogflow-prebuilt-agents/client_side_messenger/airline_support/airline_support.js [254:284]
function calculateArrivalTime(
departureTime, duration, timezoneDifferenceMinutes) {
const [hours, minutes] = departureTime.split(':').map(Number);
// Convert duration to hours and minutes
const durationHours = Math.floor(duration / 60);
const durationMinutes = duration % 60;
// Calculate initial arrival time in origin time
let arrivalHours = hours + durationHours;
let arrivalMinutes = minutes + durationMinutes;
// Adjust arrival time based on time offsets
arrivalMinutes += timezoneDifferenceMinutes;
// Handle minutes exceeding 60 or going below 0
while (arrivalMinutes >= 60) {
arrivalHours += 1;
arrivalMinutes -= 60;
}
while (arrivalMinutes < 0) {
arrivalHours -= 1;
arrivalMinutes += 60;
}
// Handle hours exceeding 24
arrivalHours %= 24;
return `${arrivalHours.toString().padStart(2, '0')}:${
arrivalMinutes.toString().padStart(2, '0')}`;
}