У мене проблема з конвертацією дати, яка знаходиться в рядковому форматі, але я не можу конвертувати її, використовуючи формат "yyyyMMdd"
.
Мій код такий:
string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");
for (int i = 0; i < tpocinfo.Length; i++)
{
switch (i)
{
case 0:
{
string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
}
break;
Для розбору DateTime скористайтеся одним з наступних методів:
Також можна використовувати шаблон try-parse:
Детальніше про Користувацькі рядки формату дати та часу.
Для повернення DateTime у вигляді рядка у форматі "yyyyMMdd" можна скористатися методом ToString
.
string date = DateTime.ToString("yyyyMMdd");
У вашому випадку, якщо ви не хочете обробляти сценарій, коли дата має інший формат або відсутня, найзручніше використовувати ParseExact
:
string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse,
"yyyyMMdd",
CultureInfo.InvariantCulture);
Виходячи з назв властивостей, схоже на те, що ви намагаєтеся перетворити рядок в дату за присвоєнням:
claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
Ймовірно, це пов'язано з поточною культурою інтерфейсу користувача, і тому він не може правильно інтерпретувати рядок дати при присвоюванні.