xconconvert string to date - PullRequest
       20

xconconvert string to date

0 голосов
/ 27 марта 2012

У меня есть модель:

    [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 Ответ

3 голосов
/ 27 марта 2012

Вам нечего делать, просто объявите свойство как 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, поскольку оно полезно только для сериализации)

...