public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) { if (value is LocalTime lt) { return(lt); } if (value is string s) { var res = _pattern.WithCulture(culture ?? CultureInfo.InvariantCulture).Parse(s); if (res.Success) { return(res.Value); } // little hack, not the finest, but should work if (DateTime.TryParse(s, out var d)) { return(LocalTime.FromTicksSinceMidnight((d - d.Date).Ticks)); } } if (value is DateTime dt) { return(LocalTime.FromTicksSinceMidnight((dt - dt.Date).Ticks)); } return(base.ConvertFrom(context, culture, value)); }