I have two DateTime objects, BirthDate and HireDate. They are correctly formatted as a string and when I pass them through to my data access layer, they need to be parsed into a DateTime object.
DateTime hD = DateTime.Parse(hire);
DateTime bD = DateTime.Parse(birth);
//incase of a datestring being passed through
dateStringPassed = "7/2/1969";
But sometimes, the strings hire
and birth
are null or empty ""
, if the code is run like this, I get a FormatException error from Parsing a empty string. How can I manage empty parses and allow the DateTime, if empty or null, be accepted as DBNull.Value
?
I still cannot manage incase the user does not pass through a DateTime string, then the parse crashes my code.
My parameter for birth date is as follows and checks the variable if null, then use DBNull.Value.
The
Parse
method can't handle empty strings, but you can use nullable DateTime and do something like this:But even safer would be using
TryParse
instead:Then for storing this value, you can test
hD.HasValue
:Since C# 7, you can use shorter syntax for inline out parameters and you can avoid nullable type altogether:
If you use this method, any thing that is not a correct date will return a
DBNull.Value
:You need to use nullable date times - the shortcut syntax would be
DateTime?
(note the?
at the end).You can test for
hD.HasValue
and if it doesn't useDbNull.Value
instead.