繁体   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