diff --git a/Conversions/RailwayTimeConversion.js b/Conversions/RailwayTimeConversion.js new file mode 100644 index 000000000..f3d30fdef --- /dev/null +++ b/Conversions/RailwayTimeConversion.js @@ -0,0 +1,35 @@ +/* + 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 Fromate -> 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