mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-18 17:49:40 +08:00
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
/*
|
|
The time conversion of normalized time to the railway is a simple algorithm
|
|
because we know that if the time is in 'AM' value it means they only want
|
|
some changes on hours and minutes and if the time in 'PM' it means the only
|
|
want some changes in hour value.
|
|
|
|
Input Formate -> 07:05:45PM
|
|
Output Formate -> 19:05:45
|
|
|
|
Problem & Explanation Source : https://www.mathsisfun.com/time.html
|
|
*/
|
|
|
|
/**
|
|
* RailwayTimeConversion method converts normalized time string to Railway time string.
|
|
* @param {String} timeString Normalized time string.
|
|
* @returns {String} Railway time string.
|
|
*/
|
|
const RailwayTimeConversion = (timeString) => {
|
|
// firstly, check that input is a string or not.
|
|
if (typeof timeString !== 'string') {
|
|
return new TypeError('Argument is not a string.')
|
|
}
|
|
// split the string by ':' character.
|
|
const [hour, minute, scondWithShift] = timeString.split(':')
|
|
// split second and shift value.
|
|
const [second, shift] = [scondWithShift.substr(0, 2), scondWithShift.substr(2)]
|
|
// convert shifted time to not-shift time(Railway time) by using the above explanation.
|
|
if (shift === 'PM') {
|
|
if (parseInt(hour) === 12) { return `${hour}:${minute}:${second}` } else { return `${parseInt(hour) + 12}:${minute}:${second}` }
|
|
} else {
|
|
if (parseInt(hour) === 12) { return `00:${minute}:${second}` } else { return `${hour}:${minute}:${second}` }
|
|
}
|
|
}
|
|
|
|
module.exports = RailwayTimeConversion
|