Try replacing dtgCustomSched.Item(row,2) with a literal string that represents a time. Something like "12:29:01". That should certainly work. Once you've verified that try using a string variable to hold the date instead of using dtgCustomSched.Item(row,2) directly. So simply assign that value to a string and then in the ParseExact line use the string variable instead. Worth a shot I guess. If that doesn't work then go back and double and triple check the string your getting from the DB. Are you sure there aren't any other characters in it that you don't want. A space? Some sort of linefeed character or something silly like that? Basically if the string isn't 8 characters long then something isn't right. In fact try using the string.length function to verify it's length. If you still can't get it I'd try another method. Do as christian said and use the string.split function to parse the numbers out of the string. Once you've got the individual hours, minutes, and seconds you should be able to pass those to the constructor of the date class to create your date object.