NLog.Targets.FileTarget.TryParseDateAndSequence C# (CSharp) Method

TryParseDateAndSequence() private static method

Parse filename with date and sequence pattern
private static TryParseDateAndSequence ( string archiveFileNameWithoutPath, string dateFormat, FileNameTemplate fileTemplate, System.DateTime &date, int &sequence ) : bool
archiveFileNameWithoutPath string
dateFormat string dateformat for archive
fileTemplate FileNameTemplate
date System.DateTime the found pattern. When failed, then default
sequence int the found pattern. When failed, then default
return bool
        private static bool TryParseDateAndSequence(string archiveFileNameWithoutPath, string dateFormat, FileNameTemplate fileTemplate, out DateTime date, out int sequence)
        {
            int trailerLength = fileTemplate.Template.Length - fileTemplate.EndAt;
            int dateAndSequenceIndex = fileTemplate.BeginAt;
            int dateAndSequenceLength = archiveFileNameWithoutPath.Length - trailerLength - dateAndSequenceIndex;

            if (dateAndSequenceLength < 0)
            {
                date = default(DateTime);
                sequence = 0;
                return false;
            }
            string dateAndSequence = archiveFileNameWithoutPath.Substring(dateAndSequenceIndex, dateAndSequenceLength);
            int sequenceIndex = dateAndSequence.LastIndexOf('.') + 1;

            string sequencePart = dateAndSequence.Substring(sequenceIndex);
            if (!Int32.TryParse(sequencePart, NumberStyles.None, CultureInfo.CurrentCulture, out sequence))
            {
                date = default(DateTime);
                return false;
            }

            var dateAndSequenceLength2 = dateAndSequence.Length - sequencePart.Length - 1;
            if (dateAndSequenceLength2 < 0)
            {
                date = default(DateTime);
                return false;
            }

            string datePart = dateAndSequence.Substring(0, dateAndSequenceLength2);
            if (!DateTime.TryParseExact(datePart, dateFormat, CultureInfo.CurrentCulture, DateTimeStyles.None,
                out date))
            {
                return false;
            }

            return true;
        }