Классический ASP xsl конвертация даты - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть следующий код, который читает RSS-ленту на моей странице, но я бы хотел, чтобы pubDate конвертировался в более удобочитаемую дату, если это возможно.

  <?xml version="1.0" encoding="iso-8859-1"?><!-- DWXMLSource="mm_news.xml" -->
  <!DOCTYPE xsl:stylesheet]>
  <xsl:output method="html" encoding="iso-8859-1"/>
  <xsl:template match="/">
    <p class="newsList-date"><xsl:value-of select="pubDate"/></p>........

Это дает мне:

  Fri, 9 Sept 2011 15:21:36 GMT

но хотел бы прочитать что-то вроде

  Friday 9 Sept 2011

Даже будь счастлив, если бы я мог просто урезать конец, чтобы просто иметь «Пт, 9 сентября 2011»

Также, если проще, я могу добавить дополнительный раздел в XML, чтобы я мог просто ввести дату, как я хочу, чтобы я мог ее прочитать, что-то вроде ниже? (Xml написан от руки, не создан динамически)

    <?xml version="1.0" encoding="US-ASCII" ?> 
    <?xml-stylesheet title="XSL_formatting" type="text/xsl" href="direct.xsl"?>
    <rss version="2.0">
    <channel>....

    <item>....
    <title>.....
    <description>....
    <thedate>.....

Большое спасибо

1 Ответ

1 голос
/ 01 октября 2011

Ну, быстрый и грязный способ - заменить select="pubDate" на выражение вроде этого:

select="substring(pubDate,1,16)"

Это зависит от того, что месяц состоит из четырех букв, и дает вам только ваш «запасной» результат «Пт, 9 сентября 2011».

Если необходимо, вы можете быть немного умнее и убрать требование месяца, состоящего из четырех букв (что маловероятно для мая), используя это выражение:

select="substring(pubDate,1,string-length(substring-before(pubDate,':'))-3)"

Вместо фиксированной длины в 16 он основывается на том, где находится первое : (во времени), и вычитает 3 из этого.

Если вы ДЕЙСТВИТЕЛЬНО хотите, есть однострочное выражение, которое может дать вам то, что вы хотите, но оно немного запутанное:

select="concat(normalize-space(substring('Monday    Tuesday  WednesdayThursday Friday   Saturday Sunday   ',string-length(substring-before('MonTueWedThuFriSatSun',substring(pubDate,1,3))) * 3 + 1,9)),substring(pubDate,5,string-length(substring-before(pubDate,':'))-7))"

Здесь используется «поиск», чтобы найти, где день недели существует в одной строке, и он используется для выбора полного имени из другой, наконец, используя «normalize-space» для обрезки любых лишних пробелов. Затем он просто объединяет его с частью даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...