public static string ToLabelString( this DateSeparatorFormat format, DateTimeSettings currentSettings, DateTime sampleTime ) { string label; if (format == DateSeparatorFormat.Dashes) { label = "Dashes"; } else // Slashes is the default. { label = "Slashes"; } DateTimeSettings settings = currentSettings with { DateSeparatorFormat = format }; return($"{label} ({sampleTime.ToSettingsString( settings )})"); }
// -------- ToSettingsString -------- /// <summary> /// Reads in the settings and returns a string representation /// of the <see cref="DateTime"/> object based on the settings. /// </summary> public static string ToSettingsString(this DateTime date, DateTimeSettings settings) { ArgumentNullException.ThrowIfNull(settings, nameof(settings)); date = date.ToTimeZoneTime(settings); DateFormat dateFormat = settings.DateFormat; MonthFormat monthFormat = settings.MonthFormat; DateSeparatorFormat dateSepFormat = settings.DateSeparatorFormat; TimeFormat timeFormat = settings.TimeFormat; char dateSeparator; if (dateSepFormat == DateSeparatorFormat.Dashes) { dateSeparator = '-'; } else // Slashes are the default. { dateSeparator = '/'; } string monthFormatString; if (monthFormat == MonthFormat.ThreeLetters) { monthFormatString = "MMM"; } else if (monthFormat == MonthFormat.FullMonth) { monthFormatString = "MMMM"; } else // Number is the default. { monthFormatString = "MM"; } string hourFormatString; string amPmFormatString; if (timeFormat == TimeFormat.Hour24) { hourFormatString = "HH"; amPmFormatString = string.Empty; } else // 12 hour is the default. { hourFormatString = "hh"; amPmFormatString = " tt"; } string timeFormatString = $"{hourFormatString}:mm{amPmFormatString}"; string formatString; if (dateFormat == DateFormat.DayMonthYear) { formatString = $"dd{dateSeparator}{monthFormatString}{dateSeparator}yyyy {timeFormatString}"; } else if (dateFormat == DateFormat.YearMonthDay) { formatString = $"yyyy{dateSeparator}{monthFormatString}{dateSeparator}dd {timeFormatString}"; } else // Month/Day/Year is the default. { formatString = $"{monthFormatString}{dateSeparator}dd{dateSeparator}yyyy {timeFormatString}"; } return(date.ToString(formatString)); }