I'm working with some strange APIs that requires the dates to be sent in the YYYYMMDD format.
I was thinking of doing something like this:
string date = string.Concat(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
Is there a better practice?
2 Answers 2
Yes there is: Date Formatting
var dateString = DateTime.Now.ToString("yyyyMMdd");
Another option would be to create an extension methods like:
public static class DateTimeExtensions
{
public static string ToYMD(this DateTime theDate)
{
return theDate.ToString("yyyyMMdd");
}
public static string ToYMD(this DateTime? theDate)
{
return theDate.HasValue ? theDate.Value.ToYMD() : string.Empty;
}
}
You would use it like:
var dateString = DateTime.Now.ToYMD();
The extension implemented also works for Nullable DateTime values.
If you are doing a lot of work with these 'yyyyMMdd' formatted DateTime values, the extension method has the benefit of less typing.
DateTime.Now
several times like this. For example, ifDateTime.Now.Month
is called just before the midnight of 31 January andDateTime.Now.Day
after the midnight, you will get the date like20120101
. It's unlikely, but certainly possible. \$\endgroup\$