Як конвертувати DateTime в/з певний формат рядка (в обох напрямках, наприклад, заданий формат "yyyyyMMd")?

У мене проблема з конвертацією дати, яка знаходиться в рядковому форматі, але я не можу конвертувати її, використовуючи формат "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:

Для розбору DateTime скористайтеся одним з наступних методів:

Також можна використовувати шаблон try-parse:

Детальніше про Користувацькі рядки формату дати та часу.

Перетворення DateTime в рядок:

Для повернення DateTime у вигляді рядка у форматі "yyyyMMdd" можна скористатися методом ToString.

  • Приклад фрагменту коду: string date = DateTime.ToString("yyyyMMdd");
  • Зверніть увагу, що великі літери M** означають місяці, а малі m** - хвилини.

Ваш випадок:

У вашому випадку, якщо ви не хочете обробляти сценарій, коли дата має інший формат або відсутня, найзручніше використовувати ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);
Коментарі (1)

Ви можете перетворити свій рядок у значення DateTime таким чином:

DateTime date = DateTime.Parse(something);

Ви можете перетворити значення DateTime у відформатований рядок таким чином:

date.ToString("yyyyMMdd");
Коментарі (0)

Виходячи з назв властивостей, схоже на те, що ви намагаєтеся перетворити рядок в дату за присвоєнням:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Ймовірно, це пов'язано з поточною культурою інтерфейсу користувача, і тому він не може правильно інтерпретувати рядок дати при присвоюванні.

Коментарі (3)