using System.Globalization;
using SmartFormat.Core.Extensions;
namespace OliverBooth.Formatting;
///
/// Represents a SmartFormat formatter that formats a date.
///
public sealed class DateFormatter : IFormatter
{
///
public bool CanAutoDetect { get; set; } = true;
///
public string Name { get; set; } = "date";
///
public bool TryEvaluateFormat(IFormattingInfo formattingInfo)
{
if (formattingInfo.CurrentValue is not string value)
{
return false;
}
if (!DateTime.TryParseExact(value, "yyyy-MM-dd",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out DateTime date))
{
return false;
}
formattingInfo.Write(date.ToString(formattingInfo.Format?.ToString(), CultureInfo.InvariantCulture));
return true;
}
}