【发布时间】:2021-08-23 18:31:07
【问题描述】:
我正在尝试导出到 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.TryParseExact 代替 Convert.ToDateTime,为输入值传递可能格式的数组。此时,如果 TryParseExact 成功转换 DateTime 变量中的原始字符串,您可以在 TryParseExact 转换的日期上使用 ToString("dd-MMM-yyyy") 获取所需格式的字符串
-
是这样吗?
-
日期时间? dt1 = 空,dt2 = 空;字符串开始日期 = 空,结束日期 = 空; if (audit.FromDate != null) { dt1 = DateTime.TryParseExact(audit.FromDate.ToString(), "dd/MMM/yyyy",CultureInfo.InvariantCulture).ToString("dd/MMM/yyyy") ;开始日期 = dt1.ToString().Substring(0, 10); }
-
重点是:audit.FromDate的类型是什么?如果它是一个字符串并且您无法控制该字符串的写入方式,那么您只能将 TryParseExact 与可能格式的数组一起使用。不完整,但你可以得到足够好的结果
-
类型为DateTime格式