mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-19 01:55:51 +08:00

* chore: Switch to Node 20 + Vitest * chore: migrate to vitest mock functions * chore: code style (switch to prettier) * test: re-enable long-running test Seems the switch to Node 20 and Vitest has vastly improved the code's and / or the test's runtime! see #1193 * chore: code style * chore: fix failing tests * Updated Documentation in README.md * Update contribution guidelines to state usage of Prettier * fix: set prettier printWidth back to 80 * chore: apply updated code style automatically * fix: set prettier line endings to lf again * chore: apply updated code style automatically --------- Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
47 lines
1.5 KiB
JavaScript
47 lines
1.5 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 Format -> 07:05:45PM
|
|
Output Format -> 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, secondWithShift] = timeString.split(':')
|
|
// split second and shift value.
|
|
const [second, shift] = [
|
|
secondWithShift.substr(0, 2),
|
|
secondWithShift.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}`
|
|
}
|
|
}
|
|
}
|
|
|
|
export { RailwayTimeConversion }
|