/
clinsparkDatesToMilliseconds
© 2025 IQVIA - All Rights Reserved
clinsparkDatesToMilliseconds
Summary
ClinSpark Items supports the following DataTypes which contain date/time information:
Date
Time
DateTime
Incomplete Date
Incomplete Time
Incomplete DateTime
A frequent task in edit checks is to compare these values, including scenarios where a type contains incomplete values.
This utility applies normalizing logic across each of these datatypes, including setting missing fields from incomplete datatypes to the appropriate “zero-like” equivalent (this differs by field since first month is 0, but first day i 1).
It returns a ms value which is useful for comparing relative times, such as which value is first.
Formal Expression
var first = findFirstItemByName(formJson, 'incomplete DateTime 1');
var second = findFirstItemByName(formJson, 'incomplete DateTime 2');
return clinsparkDatesToMilliseconds(first) <= clinsparkDatesToMilliseconds(second);
/* Extracts the time in milliseconds for ClinSpark item DataTypes including DateTime, Date, Time and the
incomplete versions of each of these. Expects that the dataType has a date component. May not be meaningful
if the DateTypes do not match.
*/
function clinsparkDatesToMilliseconds(itemData) {
var dateFields = toDateFields(itemData);
var timeFields = toTimeFields(itemData);
// logger('input value '+itemData.value);
// logger('Date fields '+dateFields);
// logger('Time fields '+timeFields);
var date = new Date(dateFields[0],dateFields[1],dateFields[2],timeFields[0],timeFields[1],timeFields[2]);
// logger('ms: '+date.getTime()+' '+date);
return date.getTime();
}
/* Extracts the date fields from an itemData which contains them. For incomplete
type blank fields are replaced with 1
*/
function toDateFields(item) {
var value = item.value;
var d = [0,1,1];
if (item.dataType.toLowerCase().indexOf('datetime') != -1) {
d = value.split('T')[0].split('-');
} else if (item.dataType.toLowerCase().indexOf('date') != -1) {
d = value.split('-');
}
d = defautBlankArrayElements(d, 1);
d[1] = d[1] -1; // // date field is 0 based
return d;
}
/* Extracts the time fields from an itemData which contains them. For incomplete
type blank fields are replaced with 0
*/
function toTimeFields(item) {
var value = item.value;
var d = [0,0,0];
if (item.dataType.toLowerCase().indexOf('datetime') != -1) {
d = value.split('T')[1].split(':');
} else if (item.dataType.toLowerCase().indexOf('time') != -1) {
d = value.split(':');
}
d = defautBlankArrayElements(d, 0);
return d;
}
function defautBlankArrayElements(array, defaultInt, isDate) {
for (var i=0; i < array.length; i++) {
if (typeof array[i] === 'undefined' || (typeof array[i] == 'string' && array[i].trim().length == 0)) {
array[i] = defaultInt;
}
}
return array;
}
, multiple selections available,
Related content
Date Conversions
Date Conversions
More like this
Implicit Methods
Implicit Methods
More like this
Javascript Util Library useful in Methods and Edit Checks
Javascript Util Library useful in Methods and Edit Checks
Read with this
Date Comparison Method
Date Comparison Method
More like this
collectCompletedFormData
collectCompletedFormData
Read with this
Incomplete/Partial DateTime Logic Check
Incomplete/Partial DateTime Logic Check
More like this
Exported and Printed Copies Are Uncontrolled