c#将yyyymmdd文本转换为dd / MM / yyyy

时间:2018-12-17 05:26:56

标签: c#

我在yyyymmdd的行中有一些文本(例如:20181211),我需要将其转换为dd / MM / yyyy

我正在使用:

cashRow["BusinessDate"] = Convert.ToDateTime(row.Cells[ClosingDate.Index].Value.ToString()).ToString("dd/MM/yyyy");

我收到错误消息“字符串未被识别为有效的DateTime。 有什么想法我要去哪里吗?

4 个答案:

答案 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)

您必须使用ParseExactyyyyMMdd字符串转换为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");