簡體   English   中英

C#newbie with DateTime變量我想設置為null

[英]C# newbie with DateTime variable I want to set to null

我有一個帶有DateTime變量的輸出數據類。 我想在加載器類中將其清除為空值,但編譯器會抱怨:

無法將null轉換為'System.Data.Time',因為它是一個不可為空的值類型。

我理解,但如果我將類型更改為DateTime? 創建可空類型包裝器我得到:

方法'ToString'的重載沒有'1'參數

我有一個讀取的輸出行。

ACCOUNT_ESTABLISHED_DATE.ToString( “YYYY-MM-DD”)

所以問題是,當我將DateTime設置為可空時,如何解決不再像具有格式化ToString的DateTime那樣的事實?

使用其Value屬性,如下所示:

DateTime? dt = DateTime.Now; // or whatever
MessageBox.Show(dt.Value.ToString(...));

嘗試

ACCOUNT_ESTABLISHED_DATE.Value.ToString("yyyy-MM-dd")

您需要使用可空類型的“Value”屬性訪問實際值。

您應該確保'Value'包含首先測試ACCOUNT_ESTABLISHED_DATE.HasValue屬性的內容。

HTH

每當你包裝Nullable<> (你正在使用DateTime?做什么DateTime? )時,你需要做obj.Value.ToString()

你在找嗎?

DateTime? dt = new DateTime();

要么

Nullable<DateTime> dt = new DateTime();
ACCOUNT_ESTABLISHED_DATE.Value.ToString("yyyy-MM-dd");

你應該寫:

ACCOUNT_ESTABLISHED_DATE.Value.ToString("yyyy-MM-dd")

.NET沒有開箱即用的方法。 您需要一個輔助方法,如:

public string Format(DateTime? date, string format)
{
    if (date == null)
        return string.Empty;

    return date.Value.ToString(format);
}

甚至更好, DateTime?的擴展方法DateTime?

public static class DateTimeExtensionMethods
{
    public static string ToString(this DateTime? date, string format)
    {
        if (date == null)
            return string.Empty;

        return date.Value.ToString(format);
    }
}

然后,要使用擴展方法,只需使用問題中的代碼,並確保將DateTimeExtensionMethods的命名空間導入到您的類中。

  string strDate = string.Empty;
  if(ACCOUNT_ESTABLISHED_DATE != null)
  {
  strDate = ACCOUNT_ESTABLISHED_DATE.Value.ToString("yyyy-MM-dd");
 }

  or you can use null collacing operator

  DateTime newDate  = ACCOUNT_ESTABLISHED_DATE ?? new Date();

   newDate.ToString("yyyy-MM-dd");

你必須使用

dt.HasValue ? dt.Value.ToString("...") : dt.ToString();

這是因為Nullable<T>本身就是一個合適的類型,其ToString()方法已經很好地完成了,因為它很好地處理了null情況。 但是要獲取底層的非可空對象,您必須使用Value屬性。 但是你必須自己檢查null (或HasValue )。

DateTime? date = getSomeDate();
if (date != null) {
   date.Value.ToString("yyyy-MM-dd");
}

你有沒有看過將DateTime設置為DataTime.MinValue?

建議在這里http://dotnetperls.com/datetime-null-minvalue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM