TimeCPID TraceDataByRank::getData(FileOffset location) { Time time = data->getLong(location); int CPID = data->getInt(location + SIZEOF_LONG); TimeCPID ToReturn(time, CPID); return ToReturn; }
string DPX_DateTime2Iso(const string &FromDpx) { if (FromDpx.size()<20 || FromDpx[ 0]<'0' || FromDpx[ 0]>'9' || FromDpx[ 1]<'0' || FromDpx[ 1]>'9' || FromDpx[ 2]<'0' || FromDpx[ 2]>'9' || FromDpx[ 3]<'0' || FromDpx[ 3]>'9' || FromDpx[ 4] != ':' || FromDpx[ 5]<'0' || FromDpx[ 5]>'9' || FromDpx[ 6]<'0' || FromDpx[ 6]>'9' || FromDpx[ 7] != ':' || FromDpx[ 8]<'0' || FromDpx[ 8]>'9' || FromDpx[ 9]<'0' || FromDpx[ 9]>'9' || FromDpx[10] != ':' || FromDpx[11]<'0' || FromDpx[11]>'9' || FromDpx[12]<'0' || FromDpx[12]>'9' || FromDpx[13] != ':' || FromDpx[14]<'0' || FromDpx[14]>'9' || FromDpx[15]<'0' || FromDpx[15]>'9' || FromDpx[16] != ':' || FromDpx[17]<'0' || FromDpx[17]>'9' || FromDpx[18]<'0' || FromDpx[18]>'9' ) return FromDpx; //Invalid, returning the value in the file // Date/Time string ToReturn(FromDpx.substr(0, 19)); ToReturn[ 4]='-'; ToReturn[ 7]='-'; ToReturn[10]='T'; // Note: should be 'T' (ISO 8601), TODO: change to 'T' during next API change // Time zone if (FromDpx.size()>20) { size_t Offset; if (FromDpx[19]==':') // Note: Cineon and DPX v1 header date/time format is with ":LTZ", DPX v2 date/time format is "LTZ", but both are atually seen in any version. Always testing both. Offset=20; else Offset=19; size_t Max=FromDpx.find('\0'); if (Max==(size_t)-1) Max=FromDpx.size(); ToReturn+=FromDpx.substr(Offset, Max-Offset); if (ToReturn.size()>22) ToReturn.insert(ToReturn.begin(), ':'); //Hours/Minutes offset sepearator added else if (ToReturn.size()==22 && (ToReturn[19]=='+' || ToReturn[19]=='-')) ToReturn+=":00"; // Minutes offset, default } return ToReturn; }