C# - 具有自定义日期格式的转换器

时间:2016-07-25 03:39:48

标签: c# .net date datetime

这是我的代码,用于检查值是否可以转换为给定类型。

public static object TryParseObject<T>(object valueObject)
    {
        string value = null;

        try
        {
            value = Convert.ToString(valueObject);
            var converter = TypeDescriptor.GetConverter(typeof(T));

            if (converter != null)
            {
                //Cast ConvertFromString(string text) : object to (T)
                return (T)converter.ConvertFromString(value);
            }
            return default(T);
        }
        catch
        {
            //Can't parse
        }
    }

这应该是应有的。现在我需要仅使用自定义格式从日期字符串转换为DateTime(比如说​​格式:&#34; MM.DD.YYYY HH:mm:ss&#34;)。我怎样才能做到这一点?

我应该单独处理DateTime场景吗?像:

 if(typeof(T) == typeof(DateTime)) {...}
 else {...}

我正在寻找能否使用现有代码进行少量更改。感谢。

1 个答案:

答案 0 :(得分:0)

如果您将方法签名更改为与其他TryParse..方法相同的

public static bool TryParseObject<T>(object valueObject, out T outValue)
{
    //your parsing code
}

然后,您可以为所需的任何类型创建重载。使用分离方法,您的代码保持干净且易于理解

public static bool TryParseObject(object valueObject, out DateTime outValue)
{
    const string EXACT_FORMAT = "MM.DD.YYYY HH:mm:ss";
    // your parsing to DateTime
}

public static bool TryParseObject(object valueObject, out int outValue)
{
    // your parsing to int
}