js-dicom
Version:
this is js-dicom
44 lines (39 loc) • 1.48 kB
JavaScript
/**
* Parses a TM formatted string into a javascript object with properties for hours, minutes, seconds and fractionalSeconds
* @param {string} time - a string in the TM VR format
* @param {boolean} [validate] - true if an exception should be thrown if the date is invalid
* @returns {*} javascript object with properties for hours, minutes, seconds and fractionalSeconds or undefined if no element or data. Missing fields are set to undefined
*/
export default function parseTM (time, validate) {
if (time.length >= 2) // must at least have HH
{
// 0123456789
// HHMMSS.FFFFFF
var hh = parseInt(time.substring(0, 2), 10);
var mm = time.length >= 4 ? parseInt(time.substring(2, 4), 10) : undefined;
var ss = time.length >= 6 ? parseInt(time.substring(4, 6), 10) : undefined;
var ffffff = time.length >= 8 ? parseInt(time.substring(7, 13), 10) : undefined;
if (validate) {
if ((isNaN(hh)) ||
(mm !== undefined && isNaN(mm)) ||
(ss !== undefined && isNaN(ss)) ||
(ffffff !== undefined && isNaN(ffffff)) ||
(hh < 0 || hh > 23) ||
(mm && (mm < 0 || mm > 59)) ||
(ss && (ss < 0 || ss > 59)) ||
(ffffff && (ffffff < 0 || ffffff > 999999))) {
throw `invalid TM '${time}'`;
}
}
return {
hours: hh,
minutes: mm,
seconds: ss,
fractionalSeconds: ffffff
};
}
if (validate) {
throw `invalid TM '${time}'`;
}
return undefined;
}