using System;
namespace Connected
{
///
/// A ready made DateTime? to string binding converter with configurable date format and culture
///
public class NullableDateConverter : Converter
{
public string DateFormat { get; set; }
public NullableDateConverter(string format = "yyyy-MM-dd")
{
DateFormat = format;
SetFunc = OnSet;
GetFunc = OnGet;
}
private DateTime? OnGet(string arg)
{
try
{
return DateTime.ParseExact(arg, DateFormat, Culture);
}
catch (FormatException e)
{
UpdateGetError(e.Message);
return null;
}
}
private string OnSet(DateTime? arg)
{
if (arg == null)
return null;
try
{
return arg.Value.ToString(DateFormat, Culture);
}
catch (FormatException e)
{
UpdateSetError(e.Message);
return null;
}
}
}
///
/// A ready made DateTime to string binding converter with configurable date format and culture
///
public class DateConverter : Converter
{
public string DateFormat { get; set; } = "yyyy-MM-dd";
public DateConverter(string format)
{
DateFormat = format;
SetFunc = OnSet;
GetFunc = OnGet;
}
private DateTime OnGet(string arg)
{
try
{
return DateTime.ParseExact(arg, DateFormat, Culture);
}
catch (FormatException e)
{
UpdateGetError(e.Message);
return default;
}
}
private string OnSet(DateTime arg)
{
try
{
return arg.ToString(DateFormat, Culture);
}
catch (FormatException e)
{
UpdateSetError(e.Message);
return null;
}
}
}
}