我在yyyymmdd的行中有一些文本(例如:20181211),我需要将其转换为dd / MM / yyyy
我正在使用:
cashRow["BusinessDate"] = Convert.ToDateTime(row.Cells[ClosingDate.Index].Value.ToString()).ToString("dd/MM/yyyy");
我收到错误消息“字符串未被识别为有效的DateTime。 有什么想法我要去哪里吗?
答案 0 :(得分:7)
您需要使用ParseExact
(或TryParseExact
)来解析日期:
var date = "20181217";
var parsedDate = DateTime.ParseExact(date, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
var formattedDate = parsedDate.ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture)
在这里,我们告诉ParseExact
以yyyyMMdd格式期望我们的日期,然后告诉它以dd / MM / yyyy格式格式化已解析的日期。
将其应用于您的代码:
cashRow["BusinessDate"] = DateTime.ParseExact(row.Cells[ClosingDate.Index].Value.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
答案 1 :(得分:2)
您必须使用ParseExact
将yyyyMMdd
字符串转换为DateTime
,如下所示,然后一切正常。
cashRow["BusinessDate"] = DateTime.ParseExact(row.Cells[ClosingDate.Index].Value.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
答案 2 :(得分:1)
您已经知道输入yyyyMMdd的确切格式(例如:20181211),只需将其提供给DateTime.ParseExact()
,然后在返回的ToString()
对象上调用DateTime
。
string YourOutput = DateTime.ParseExact(p_dates, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture).ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
答案 3 :(得分:-2)
尝试一下:
cashRow["BusinessDate"] = row.Cells[ClosingDate.Index].Value.ToString("dd/MM/yyyy");