C# int(s) to datetime

Date: 2020-10-28
using System;
using System.Linq;

public class DateTimeHelper
{    
    public static string GetDigits(string s) => new string(s?.Where(char.IsDigit).ToArray());

    public static DateTime? ToDateTimeFromInts(int? dateInt, int? timeInt)
    {
        var date = GetDateFromInt(dateInt);
        if (date == null)
            return null;
        var time = GetTimeFromInt(timeInt);
        if (time != null)
            date = date.Value + time.Value;
        return date;
    }

    private static TimeSpan? GetTimeFromInt(int? timeInt)
    {
        var timeStr = GetDigits(timeInt?.ToString() ?? "");
        if (timeStr.Length < 4)
            return null;

        var hour = int.Parse(timeStr.Substring(0, 2));
        var minute = int.Parse(timeStr.Substring(2, 2));
        var second = 0;
        if (timeStr.Length >= 6)
            second = int.Parse(timeStr.Substring(4, 2));
        return new TimeSpan(hour, minute, second);
    }

    private static DateTime? GetDateFromInt(int? dateInt)
    {
        var dateStr = GetDigits(dateInt?.ToString() ?? "");
        if (dateStr.Length < 8)
            return null;

        var year = int.Parse(dateStr.Substring(0, 4));
        var month = int.Parse(dateStr.Substring(4, 2));
        var date = int.Parse(dateStr.Substring(6, 2));
        var dateTime = new DateTime(year, month, date);
        return dateTime;
    }
}

41820cookie-checkC# int(s) to datetime