在类属性中转换值类型

时间:2018-01-19 14:15:09

标签: c#

您好我有一个简单的问题,我正在尝试转换(值为DateTime,我想将其转换为字符串)类内部的值类型为另一种类型,到目前为止我已经尝试过:

    private string timestamp;

    public string timestamp
    {
        get => timestamp;
        set
        {
            if (value != timestamp)
            {
                timestamp = (DateTime)value.ToString("dd'/'MM'/'yyyy HH':'mm':'ss.fff");
            }
        } 
    }

但没有运气。有没有解决方案??

1 个答案:

答案 0 :(得分:3)

您正在使用ToString将字符串转换为字符串,并使用您在DateTime上期望的格式化程序,然后将其转换为必须分配给字符串的DateTime。

显然,这不起作用。

如果您尝试验证新属性值(Value)是否可以视为有效字符串,请使用DateTime.TryParseExact验证给定字符串是否为有效DateTime。如果是,请将字符串分配给属性的后备字段。

set
{
   if (value != timestamp && DateTime.TryParseExact(value, 
                                                    "dd'/'MM'/'yyyy HH':'mm':'ss.fff",                                                       
                                                  CultureInfo.CurrentCulture, 
                                                  DateTimeStyles.None, DateTime out d )
   {
       timestamp = value;
   }
} 

你必须使用TryParseExact方法的参数来调整一下,看看你的场景中有什么用。