No DateTime?.ToString(string) overload?

前端 未结 3 854
别跟我提以往
别跟我提以往 2020-12-18 01:29

I am aware of the standard procedure for displaying a DateTime in a custom format, like so:

MessageBox.Show(dateSent.ToString(\"dd/MM/yyyy hh:mm:s

相关标签:
3条回答
  • 2020-12-18 01:54

    Instead of having to manually perform a null check every time, you can write an extension method.

     public static string ToStringFormat(this DateTime? dt, string format)
     {
          if(dt.HasValue) 
             return dt.Value.ToString(format);
          else
             return "";
     }
    

    And use it like this (with whatever string format you want)

     Console.WriteLine(myNullableDateTime.ToStringFormat("dd/MM/yyyy hh:mm:ss"));
    
    0 讨论(0)
  • 2020-12-18 02:04

    You can still use

    variableName.Value.ToString(customFormat);
    
    0 讨论(0)
  • 2020-12-18 02:13

    DateTime? is syntactic sugar for Nullable<DateTime> and that's why it don't have ToString(format) overload.

    However, you can access underlying DateTime struct using Value property. But before that use HasValue to check, if the value exists.

    MessageBox.Show(dateSent.HasValue ? dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") : string.Empty)
    
    0 讨论(0)
提交回复
热议问题