簡體   English   中英

Convert.ToDateTime('Datestring') 到所需的 dd-MMM-yyyy 日期格式

[英]Convert.ToDateTime('Datestring') to required dd-MMM-yyyy format of date

我正在嘗試導出到 excel 我有日期字符串,可以是任何日期格式,但我想將其轉換為 dd-MMM-yyyy 格式。 我已經嘗試了每個 Convert.ToDatetime 選項,它只轉換為系統格式。 我希望它轉換 dd-MMM-yyyy 格式。

提前致謝。

List<UnavailableModel> collection = UnavailableBL.GetAllUnavailableDetails(FilteredFacetsJsonString).Result.ToList();
base.Warning(string.Format("Get {0} number of records ", collection.Count));
List<object> obj = new List<object>();
obj.Insert(0, new string[7] { "NAME", "REGION NAME", "MANAGER NAME", "FROM DATE", "TO DATE", "CATEGORY", "COMMENTS" });

int count = 1;
foreach (var audit in collection)
{
    DateTime? dt1 = null, dt2 = null;
    string StartDate = null, EndDate = null;
    if (audit.FromDate != null)
    {
        dt1 = Convert.ToDateTime(audit.FromDate);
        StartDate = dt1.ToString().Substring(0, 10);
    }
    if (audit.ToDate != null)
    {
        dt2 = Convert.ToDateTime(audit.ToDate);
        EndDate = dt2.ToString().Substring(0, 10);
    }
    obj.Insert(count, new string[7]{
        string.Format("\"{0}\"", audit.Region_Name),
        string.Format("\"{0}\"",  audit.First_Name+" 
        "+audit.Last_Name),
        string.Format("\"{0}\"", audit.Manager_First_Name+" "+audit.Manager_Last_Name),
        string.Format("\"{0}\"", StartDate),
        string.Format("\"{0}\"", EndDate),
        string.Format("\"{0}\"", audit.Category),
        string.Format("\"{0}\"", audit.Comments)
    });
    count++;
}
base.Warning(string.Format("Data table created "));


for (int i = 0; i < obj.Count; i++)
{
   string[] stringCSV = (string[])obj[i];
   for (int j = 0; j < stringCSV.Length; j++)
   {
       //Append data with separator.
       sb.Append(stringCSV[j] + ',');
   }

   //Append new line character.
   sb.Append("\r\n");

}

首先, DateTime沒有 format 它在內部存儲為 integer 代表自 0001 年 1 月 1 日以來的滴答數。 DateTime在顯示時“具有格式”。 只有在它被轉換為string之后(無論是使用當前文化的默認格式,還是在調用ToString時明確指定的格式)。

其次,這條線毫無意義:

dt1 = Convert.ToDateTime(audit.FromDate);`

由於FromDate已經DateTime ,您需要做的就是直接分配它:

dt = audit.FromDate;

但是你把事情搞混了。 您不能將格式化的 Date ( string )分配給DateTime變量。 將您的日期格式化為string並將其存儲為string變量並將其傳遞給您的 Excel 構建方法:

string EndDate = audit.FromDate.ToString("dd-MMM-yyyy");

您的代碼中絕對不需要DateTime.ParseDateTime.TryParseDateTime.TryParseExactConvert.ToDateTime 您已經擁有了所需的一切,而無需執行任何不必要的“轉換”。

如果您手頭有 DateTime,則可以將其寫為 excel 中的字符串,如下所示:

StartDate = dt1.ToString("dd-MMM-yyyy");

然后使用該字符串輸入 excel。

只是為了擴展Afshin 的實用解決方案。 關於這個問題有很多資源問題 通常,當從 object 格式化字符串時, ToString方法是您的朋友。 對於日期,您可以將所需的自定義格式作為字符串傳遞:

StartDate = dt1.ToString("dd-MMM-yyyy");

請記住,在處理外部資源時使用DateTime.TryParse通常更安全。 這是有關該主題的一些指導

暫無
暫無

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

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