mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 01:18:23 +08:00
chore: Merge pull request #678 from suryapratapsinghsuryavanshi/master
added RailwayTimeConversion method in the conversion category.
This commit is contained in:
35
Conversions/RailwayTimeConversion.js
Normal file
35
Conversions/RailwayTimeConversion.js
Normal file
@ -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
|
Reference in New Issue
Block a user