Create a Date/Time Wave from Text Waves
hrodstein
// Creates a date/time wave from a date wave stored as text in YYYY-MM-DD format
// and a time wave stored as text in HH:MM:YY format.
// Example:
// Make/O/T wDateAsText = {"2016-08-15", "2016-08-15"}
// Make/O/T wTimeAsText = {"19:01:00", "19:01:18"}
// TextWavesToDateTimeWave(wDateAsText, wTimeAsText, "wDateTime")
// Edit wDateTime
Function ConvertTextToDateTime(dateAsText, timeAsText)
String dateAsText // Assumed in YYYY-MM-DD format
String timeAsText // Assumed in HH:MM:DD format
Variable dt
Variable year, month, day
sscanf dateAsText, "%d-%d-%d", year, month, day
dt = Date2Secs(year, month, day)
Variable timeOfDay
Variable hour, minute, second
sscanf timeAsText, "%d:%d:%d", hour, minute, second
timeOfDay = 3600*hour + 60*minute + second
dt += timeOfDay
return dt
End
Function/WAVE TextWavesToDateTimeWave(dateAsTextWave, timeAsTextWave, outputWaveName)
WAVE/T dateAsTextWave // Assumed in YYYY-MM-DD format
WAVE/T timeAsTextWave // Assumed in HH:MM:DD format
String outputWaveName
Variable numPoints = numpnts(dateAsTextWave)
Make/O/D/N=(numPoints) $outputWaveName
WAVE wOut = $outputWaveName
SetScale d, 0, 0, "dat", wOut
Variable i
for(i=0; i<numPoints; i+=1)
String dateAsText = dateAsTextWave[i]
String timeAsText = timeAsTextWave[i]
Variable dt = ConvertTextToDateTime(dateAsText, timeAsText)
wOut[i] = dt
endfor
return wOut
End
// and a time wave stored as text in HH:MM:YY format.
// Example:
// Make/O/T wDateAsText = {"2016-08-15", "2016-08-15"}
// Make/O/T wTimeAsText = {"19:01:00", "19:01:18"}
// TextWavesToDateTimeWave(wDateAsText, wTimeAsText, "wDateTime")
// Edit wDateTime
Function ConvertTextToDateTime(dateAsText, timeAsText)
String dateAsText // Assumed in YYYY-MM-DD format
String timeAsText // Assumed in HH:MM:DD format
Variable dt
Variable year, month, day
sscanf dateAsText, "%d-%d-%d", year, month, day
dt = Date2Secs(year, month, day)
Variable timeOfDay
Variable hour, minute, second
sscanf timeAsText, "%d:%d:%d", hour, minute, second
timeOfDay = 3600*hour + 60*minute + second
dt += timeOfDay
return dt
End
Function/WAVE TextWavesToDateTimeWave(dateAsTextWave, timeAsTextWave, outputWaveName)
WAVE/T dateAsTextWave // Assumed in YYYY-MM-DD format
WAVE/T timeAsTextWave // Assumed in HH:MM:DD format
String outputWaveName
Variable numPoints = numpnts(dateAsTextWave)
Make/O/D/N=(numPoints) $outputWaveName
WAVE wOut = $outputWaveName
SetScale d, 0, 0, "dat", wOut
Variable i
for(i=0; i<numPoints; i+=1)
String dateAsText = dateAsTextWave[i]
String timeAsText = timeAsTextWave[i]
Variable dt = ConvertTextToDateTime(dateAsText, timeAsText)
wOut[i] = dt
endfor
return wOut
End
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More