
Parse Date, Time and Date/Time Strings


hrodstein
Function ParseDateStringAlpha(str) String str // Format: ddmmmyyyy hh:mm:ss.xx Variable day, month, year, hour, minute, second, fraction String monthStr sscanf str, "%2d%3s%4d %d:%d:%d.%d", day, monthStr, year, hour, minute, second, fraction // For debugging only. // Print day, monthStr, year, hour, minute, second, fraction // This should be broken out into a subroutine for cleanliness. strswitch(monthStr) case "jan": month=1 break case "feb": month=2 break case "mar": month=3 break case "apr": month=4 break case "may": month=5 break case "jun": month=6 break case "jul": month=7 break case "aug": month=8 break case "sep": month=9 break case "oct": month=10 break case "nov": month=11 break case "dec": month=12 break endswitch Variable dt // Igor date/time format. dt = date2secs(year, month, day) dt += 3600*hour + 60*minute + second + fraction return dt End // ParseDateStringUSNumeric(str) // Returns seconds since 1/1/1904 Function ParseDateStringUSNumeric(str) String str // Format: "mm/dd/yy hh:mm:ss" or "mm/dd/yyyy hh:mm:ss" (preferred) Variable day, month, year, hour, minute, second // Do a trial run to determine if four digit year is used. Variable fourDigitYear sscanf str, "%2d/%2d/%d", month, day, year fourDigitYear = year > 99 // sscanf requires Igor Pro 4 or later. if (fourDigitYear) sscanf str, "%2d/%2d/%4d %d:%d:%d", month, day, year, hour, minute, second else sscanf str, "%2d/%2d/%2d %d:%d:%d", month, day, year, hour, minute, second year += 2000 // Assume this century. endif // For debugging only. // Print month, day, year, hour, minute, second Variable dt // Igor date/time format. dt = date2secs(year, month, day) dt += 3600*hour + 60*minute + second return dt End // ParseTimeString(str) // Returns seconds. Time string format is assumed to be hh:mm or hh:mm:ss. Function ParseTimeString(str) String str // Format: "hh:mm" or "hh:mm:ss" Variable hour, minute, second // sscanf requires Igor Pro 4 or later. sscanf str, "%d:%d:%d", hour, minute, second if (V_flag == 2) second = 0 endif // For debugging only. // Print hour, minute, second Variable dt // Igor date/time format. dt = 3600*hour + 60*minute + second return dt End

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More