C# 如何将YYYYMMDD值转换为日期时间?

C# 如何将YYYYMMDD值转换为日期时间?,c#,parsing,datetime,C#,Parsing,Datetime,这不应该被视为一个重复的问题,因为我尝试了其他地方给出的答案,但仍然不起作用 例如: qr.DateToGenerate = DateTime.ParseExact(crvArray[2], "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None); …我从中得到,crvArray[2]的值为“20161201”,我得到: 对于我从中得到的以下代码,“Try”返回false,并且不进行赋值 if (DateTime.T

这不应该被视为一个重复的问题,因为我尝试了其他地方给出的答案,但仍然不起作用

例如:

qr.DateToGenerate = DateTime.ParseExact(crvArray[2], "yyyyMMdd",
    CultureInfo.InvariantCulture, DateTimeStyles.None);
…我从中得到,
crvArray[2]
的值为“20161201”,我得到:

对于我从中得到的以下代码,“Try”返回false,并且不进行赋值

if (DateTime.TryParseExact(crvArray[2],
               format,
               System.Globalization.CultureInfo.InvariantCulture,
               System.Globalization.DateTimeStyles.None,
               out date))
{
    qr.DateToGenerate = date;
}
我需要从什么角度出发

更新 这(传递一个文本字符串)起作用:

…当然,这是行不通的

然而,这并不意味着:

private static QueuedReportsNew ConvertCRVRecordToQueuedReport(string _qrRecord)
{
    QueuedReportsNew qr = new QueuedReportsNew();
    string[] crvArray = _qrRecord.Split(',');
    . . .
    String dateToGen = crvArray[2];
    . . .
    qr.DateToGenerate = DateTime.ParseExact(dateToGen, "yyyyMMdd", null, DateTimeStyles.None);
    . . .
…即使
crvArray[2]
的值为“20170105”


您的代码很好,我敢打赌crvArray[2]不完全包含
20170105


我猜某处有一个不可打印的字符(例如空格)。如果是这种情况,修剪字符串(
crvArray[2].Trim()
)将解决该问题。

下面的方法在4和2个字符后添加/签名。返回值可以转换为日期时间

public string AddSignToDate(string date)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < date.Length; i++)
        {
            if (i == 4)
            {
                sb.Append("/" + date[i]);
            }
            else if (i == 6)
            {
                sb.Append("/" + date[i]);
            }
            else
            {
                sb.Append(date[i]);
            }                
        }
        return sb.ToString();
    }  
公共字符串AddSignToDate(字符串日期)
{
StringBuilder sb=新的StringBuilder();
for(int i=0;i
您确定
crvArray[2]
具有有效的日期字符串吗。调用
dateToGen
字符串上的
tocharray()
,查看其中是否有一些额外的非打印字符。(在调试器监视窗口中,输入
“20170105.tocharray()
dateToGen.tocharray()
并查找差异)调用.Trim(),然后将其传递到ParseExactCreate中。在发布之前,真正地做一个File | NewProject,并用2到3行来演示问题。因为ParseExact()很好,所以您的数据或假设不是。只是要发布相同的内容…=)
private static QueuedReportsNew ConvertCRVRecordToQueuedReport(string _qrRecord)
{
    QueuedReportsNew qr = new QueuedReportsNew();
    string[] crvArray = _qrRecord.Split(',');
    . . .
    String dateToGen = crvArray[2];
    . . .
    qr.DateToGenerate = DateTime.ParseExact(dateToGen, "yyyyMMdd", null, DateTimeStyles.None);
    . . .
public string AddSignToDate(string date)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < date.Length; i++)
        {
            if (i == 4)
            {
                sb.Append("/" + date[i]);
            }
            else if (i == 6)
            {
                sb.Append("/" + date[i]);
            }
            else
            {
                sb.Append(date[i]);
            }                
        }
        return sb.ToString();
    }