как привести к нормальному виду pubdate в rss-reader

356
19 мая 2021, 06:30

Делаю rss-reader, не знаю как привести pubdate к виду которому я хочу. По умолчанию pubdate имеет вид "Tue, 06 Aug 2019 00:00:00 +0300"

как из этого сделать формат dd.MM.yyyy

В гугле необходимой информации не нашел.

Привожу код контроллера

   public ActionResult Index()
        {
    var RSSFeed = new List<RSS>();
                foreach (var url in db.Source.Where(c => c.id != null ).Select(c => c.URL))
                {
                    WebClient wclient = new WebClient();
                    string RSSData = wclient.DownloadString(url);
                    var fromEncoding = Encoding.Default;
                    var bytes = fromEncoding.GetBytes(RSSData);
                    var toEncoding = Encoding.UTF8;
                    RSSData = toEncoding.GetString(bytes);
                    XDocument xml = XDocument.Parse(RSSData);
                    var RSSFeedData = (from x in xml.Descendants("item")
                                       select new RSS
                                       {
                                           Title = (string)x.Element("title"),
                                           Link = (string)x.Element("link"),
                                           PubDate = (string)x.Element("pubDate")
                                       });
                    RSSFeed.AddRange(RSSFeedData);
                }
        ViewBag.RSS = RSSFeed;
        return View();
       }

View:

 <table class="table table-hover">
        <thead>
            <tr>
                <th>Title</th>
                <th>Publish Date</th>
            </tr>
        </thead>
    <tbody>
        @foreach (var item in ViewBag.RSS)
        {
            <tr>
                <td><a href="@item.Link">@item.Title</a></td>
                <td>@item.PubDate</td>
            </tr>
        }
    </tbody>
</table>

Models:

 public class RSS
    {
        public string Title { get; set; }
        public string Link { get; set; }
        public string Description { get; set; }
        public string PubDate { get; set; }
    }
Answer 1

Измените тип свойства PubDate на DateTime.

И далее:

PubDate = (DateTime)x.Element("pubDate")

Если это не сработает, то можно использовать:

PubDate = DateTime.Parse(x.Element("pubDate").Value)

Однако, работоспособность этого кода зависит от текущей культуры.
Вероятно, лучше всего будет указать культуру явно:

PubDate = DateTime.Parse(x.Element("pubDate").Value, CultureInfo.InvariantCulture)

И далее выводим дату в желаемом формате:

<td>@item.PubDate.ToShortDateString()</td>

Это простейший вариант, но он зависит от текущей культуры.
Лучше задать формат явно:

<td>@item.PubDate.ToString("dd.MM.yyyy")</td>

PS: и здесь тоже можно задать культуру явно.

READ ALSO
NUnit игнорирует тесты, не запускаем мои тесты

NUnit игнорирует тесты, не запускаем мои тесты

Создал новый проект установил NUnit 312

108
Парсинг JSON ответа при помощи Newtonsoft.JSON [дубликат]

Парсинг JSON ответа при помощи Newtonsoft.JSON [дубликат]

Есть ответ сервера в таком виде (Camunda), хотелось бы выловить id каждого, как сие сотворить даже и не представлюПомогите пожалуйста, буду очень...

232
Как совместить все шаблоны в 1 стиль

Как совместить все шаблоны в 1 стиль

Есть код переопределяющий дизайн элемента Menu

94
Кеширует ли .NET коллекцию?

Кеширует ли .NET коллекцию?

Например, есть метод, который на вход принимает массив значений

91