xconconvert string to date
У меня есть модель:
[XmlRoot(ElementName = "event", IsNullable=true)]
public class Event
{
public int id { get; set; }
public string title { get; set; }
public eventArtists artists { get; set; }
public venue venue { get; set; }
public string startDate { get;set;}
public string description { get; set; }
[XmlElement("image")]
public List<string> image { get; set; }
public int attendance { get; set; }
public int reviews { get; set; }
public string url { get; set; }
public string website { get; set; }
public string tickets { get; set; }
public int cancelled { get; set; }
[XmlArray(ElementName="tags")]
[XmlArrayItem(ElementName="tag")]
public List<string> tags { get; set; }
}
Теперь я хочу преобразовать открытую строку startDate { get;set;} в DatiTime:
public DateTime startDate { get{return startDate;} set{startDate. = DateTime.Parse(startDate);}}
Как я могу это сделать?
1 ответ
Решение
У вас нет ничего особенного, просто объявите собственность как DateTime
, XmlSerializer автоматически преобразует его в строку типа 2012-03-27T16:21:12.8135895+02:00
Если вам нужно использовать определенный формат, вы должны использовать небольшую хитрость... Положите [XmlIgnore]
атрибут на DateTime
свойство, и добавьте новое строковое свойство, которое обрабатывает форматирование:
[XmlIgnore]
public DateTime startDate { get;set;}
private const string DateTimeFormat = "ddd, dd MMM yyyy HH:mm:ss";
[XmlElement("startDate")]
[EditorBrowsable(EditorBrowsableState.Never)]
public string startDateXml
{
get { return startDate.ToString(DateTimeFormat, CultureInfo.InvariantCulture); }
set { startDate = DateTime.ParseExact(value, DateTimeFormat, CultureInfo.InvariantCulture); }
}
([EditorBrowsable]
атрибут существует, чтобы не показывать свойство в intellisense, так как оно полезно только для сериализации)