/
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; }

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