using System.Globalization;
public class DicomDateTimeParser
public static DateTime ParseDicomDateTime(string dicomDateTime)
"yyyyMMddHHmmss.ffffzzz",
"yyyyMMddHHmmss.fffffzzz",
"yyyyMMddHHmmss.ffffffzzz"
dicomDateTime = dicomDateTime.Replace(",", ".");
if (DateTime.TryParseExact(dicomDateTime, formats, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out DateTime parsedDateTime))
throw new FormatException("Invalid DICOM datetime format.");
public static void Main()
"20230115123045.123456+0100",
"20230115123045,123456-0500"
foreach (var dicomDT in dicomDTs)
DateTime dt = ParseDicomDateTime(dicomDT);
Console.WriteLine($"Parsed DateTime for {dicomDT}: " + dt.ToString("o"));
catch (FormatException ex)
Console.WriteLine($"Error parsing {dicomDT}: " + ex.Message);