Вы можете написать:
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);
Также могут обрабатываться несоответствия форматов и исключения...
Диапазон индекса в строке:
[0 .. Length - 1]
.