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();
}