Получить дату из имени файла и сохранить как переменную DateTime

avatar
erdalemlik
8 августа 2021 в 16:14
66
1
-2

Мне нужно сохранить дату в имени файла как переменную DateTime
Файл всегда нравится

T201901150001.CDR

ГГГГ - ММ - ДД - минуты - часы
Как это можно сделать с помощью DateTime.ParseExact() в .NET CORE
Спасибо за ответ! Я пробовал что-то вроде этого.lastRecord.Filename — строка.\

DateTime parsedFile = DateTime.ParseExact(lastRecord.Filename.Substring(2,13),"yyyy-MM-dd HH:mm",CultureInfo.InvariantCulture)
Источник
Olivier Jacot-Descombes
8 августа 2021 в 20:50
0

Диапазон индекса в строке: [0 .. Length - 1].

Ответы (1)

avatar
user12031933
8 августа 2021 в 16:25
1

Вы можете написать:

string filename = "T201901150001.CDR";
string pattern = filename.Substring(1, 12);

var date = DateTime.ParseExact(pattern, "yyyyMMddmmHH", CultureInfo.InvariantCulture);

Console.WriteLine(date);

Подстрока удаляет первую букву и расширение.

Затем мы анализируем часть даты строки.

Его можно адаптировать по шаблону T[date-schema].EXT, если он отличается, поэтому будут изменены первый индекс и количество символов, а также параметр format метода ParseExact.

Также, если имя файла является полным путем, мы можем использовать:

string pattern = System.IO.Path.GetFileName(filename).Substring(1, 12);

Вывод

15/01/2019 01:00:00

Улучшение

Мы можем определить переменную (полезно, если пользователь может изменить этот параметр) или константу для формата и использовать ее длину вместо литерала, что будет лучше:

using System.IO;

const string FileDatePatternPrefix = "T";

const string FileDatePattern = "yyyyMMddmmHH";

string pattern = Path.GetFileNameWithoutExtension(filename)
                     .Substring(FileDatePatternPrefix.Length, FileDatePattern.Length);

Также могут обрабатываться несоответствия форматов и исключения...