public static string Format(this DateTime dateTime, CultureInfo cultureInfo, TimeFormatOption option = TimeFormatOption.IncludeTimeIfNonZero) { if (dateTime == default) { return(string.Empty); } var hasTimePart = dateTime.Second + dateTime.Minute + dateTime.Hour > 0; var dateOnly = dateTime.ToString("d", cultureInfo); var dateTimeTemplate = $"{dateOnly} {{0}}"; return(option switch { TimeFormatOption.ExcludeTime => dateOnly, TimeFormatOption.IncludeTimeIfNonZero => hasTimePart ? GetDateWithTime("HH:mm") : dateOnly, TimeFormatOption.ExcludeSeconds => GetDateWithTime("HH:mm"), TimeFormatOption.IncludeTime => GetDateWithTime("HH:mm:ss"), TimeFormatOption.IncludeMilliseconds => GetDateWithTime("HH:mm:ss.fff"), _ => throw new ArgumentOutOfRangeException(nameof(option), option, null) });
public static string Format(this DateTimeOffset dateTime, TimeFormatOption option = TimeFormatOption.IncludeTimeIfNonZero) => dateTime.Format(CultureInfo.CurrentUICulture, option);
public static string Format(this DateTimeOffset dateTime, CultureInfo cultureInfo, TimeFormatOption option = TimeFormatOption.IncludeTimeIfNonZero) => dateTime.ToLocalTime().ToDateTime().Format(cultureInfo, option);
public static string Format(this DateTimeOffset?dateTime, TimeFormatOption option = TimeFormatOption.IncludeTimeIfNonZero) => dateTime is null ? string.Empty : dateTime.Value.Format(CultureInfo.CurrentUICulture, option);