|
Как преобразовать дату из формата RSS в нормальный вид
|
|||
---|---|---|---|
#18+
Извините, если вопрос уже задавался, найти не смог Вопрос как из даты/времени в формате который записывается в RSS, напр.: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2010, 15:11 |
|
Как преобразовать дату из формата RSS в нормальный вид
|
|||
---|---|---|---|
#18+
<xsl:variable name="dt" select="Date"/> <xsl:value-of select="substring($dt,6,2)"/> <xsl:text>.</xsl:text> <xsl:call-template name="ConvMonth"> <xsl:with-param name="month" select="substring($dt,9,3)"></xsl:with-param> </xsl:call-template> <xsl:text>.</xsl:text> <xsl:value-of select="substring($dt,13,4)"/> <xsl:template name="ConvMonth"> <xsl:param name="month"/> <xsl:choose> <xsl:when test="$month = 'Jan'">01</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Feb'">02</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Mar'">03</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Apr'">04</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'May'">05</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Jun'">06</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Jul'">07</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Aug'">08</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Sep'">09</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Oct'">10</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Nov'">11</xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="$month = 'Dec'">12</xsl:when> </xsl:choose> </xsl:template> ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2010, 18:05 |
|
Как преобразовать дату из формата RSS в нормальный вид
|
|||
---|---|---|---|
#18+
prustr, с чузами - передоз Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2010, 22:16 |
|
Как преобразовать дату из формата RSS в нормальный вид
|
|||
---|---|---|---|
#18+
roschinspb, Ваша проблема несколько шире, чем кажется, в сандарте rfc #822 пп 5 описанна спецификация на дату, именно этот стандарт является правильным для RSS, несмотря на это, год часто пишут 4х знаковый. Ниже привожу код для MSXML, который правильно разбирает любую RSS дату "по стандарту" и не очень. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2010, 22:26 |
|
Как преобразовать дату из формата RSS в нормальный вид
|
|||
---|---|---|---|
#18+
Спасибо всем откликнувшимся. Выкладываю то, что получилось, может кому пригодится. XSL-файл преобразования RSS->HTM<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:msxsl="urn:schemas-microsoft-com:xslt"> <xsl:output method="html"/> <xsl:variable name="_m"> <month num="1" num2="01" name="Jan"/> <month num="2" num2="02" name="Feb"/> <month num="3" num2="03" name="Mar"/> <month num="4" num2="04" name="Apr"/> <month num="5" num2="05" name="May"/> <month num="6" num2="06" name="Jun"/> <month num="7" num2="07" name="Jul"/> <month num="8" num2="08" name="Aug"/> <month num="9" num2="09" name="Sep"/> <month num="10" num2="10" name="Oct"/> <month num="11" num2="11" name="Nov"/> <month num="12" num2="12" name="Dec"/> </xsl:variable> <xsl:variable name="months" select="msxsl:node-set($_m)/month"/> <xsl:template match="pubDate" name="date822toStr"> <xsl:param name="date" select="text()"/> <xsl:variable name="date-str"> <xsl:variable name="ds"> <xsl:choose> <xsl:when test="contains( $date, ',')"> <xsl:value-of select="substring-before(substring-after($date, ', '), ':')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="substring-before($date, ':')"/> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:value-of select="substring( $ds, 1, string-length( $ds ) - 3 )"/> </xsl:variable> <xsl:value-of select="substring-before( $date-str, ' ')"/> <xsl:text>.</xsl:text> <xsl:value-of select="$months[@name=substring-before( substring-after( $date-str, ' '), ' ')]/@num2"/> <xsl:text>.</xsl:text> <xsl:value-of select="substring-after( substring-after( $date-str, ' '), ' ')"/> <xsl:variable name="ts"> <xsl:value-of select="substring($date, string-length($date-str), string-length($date) )"/> </xsl:variable> <xsl:variable name="time-str"> <xsl:value-of select="substring($ts, string-length(substring-before($ts, ':')) - 2, string-length($ts) )"/> </xsl:variable> <xsl:choose> <xsl:when test="contains( $time-str, '00:00:00')"> </xsl:when> <xsl:otherwise> <xsl:text> </xsl:text> <xsl:choose> <xsl:when test="contains( $time-str, ' MSK')"> <xsl:value-of select="substring-before($time-str, ' MSK')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$time-str"/> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="/"> <html> <xsl:element name="head"> <xsl:element name="style"> <xsl:attribute name="type"><xsl:text>text/css</xsl:text></xsl:attribute> <xsl:attribute name="media"><xsl:text>all</xsl:text></xsl:attribute> <xsl:text>@import "styles.css";</xsl:text> </xsl:element> </xsl:element> <body> <xsl:attribute name="ID"><xsl:text>allbody</xsl:text></xsl:attribute> <xsl:apply-templates select="//channel"/> <table ID="dovn" style="WIDTH: 95%" align="center"> <xsl:apply-templates select="//item"/> </table> </body> </html> </xsl:template> <xsl:template match="channel"> <H2> <xsl:if test="link"> <a> <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute> <xsl:element name="img"> <xsl:attribute name="border">0</xsl:attribute> <xsl:choose> <xsl:when test="image"> <xsl:attribute name="src"><xsl:value-of select="image"/></xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="src">img/tobegin.gif</xsl:attribute> </xsl:otherwise> </xsl:choose> </xsl:element> </a> </xsl:if> <xsl:value-of select="title"/> <xsl:if test="pubDate"> <br/> <small> <xsl:text>(</xsl:text> <xsl:call-template name="date822toStr"> <xsl:with-param name="date" select="pubDate"/> </xsl:call-template> <xsl:text>)</xsl:text> </small> </xsl:if> </H2> <div> <xsl:value-of select="description"/> </div> </xsl:template> <xsl:template match="item"> <xsl:if test="title|link|category"> <tr ID="dovn2"> <td width="128" ID="dovn2"> <xsl:choose> <xsl:when test="link"> <xsl:for-each select="link"> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="text()"/></xsl:attribute> <xsl:element name="img"> <xsl:attribute name="width">22</xsl:attribute> <xsl:attribute name="height">20</xsl:attribute> <xsl:attribute name="border">0</xsl:attribute> <xsl:attribute name="src">img/link1.gif</xsl:attribute> </xsl:element> </xsl:element> </xsl:for-each> </xsl:when> <xsl:otherwise> <xsl:element name="img"> <xsl:attribute name="width">22</xsl:attribute> <xsl:attribute name="height">20</xsl:attribute> <xsl:attribute name="border">0</xsl:attribute> <xsl:attribute name="src">img/link0.gif</xsl:attribute> </xsl:element> </xsl:otherwise> </xsl:choose> </td> <td ID="dovn2"> <xsl:value-of select="title"/> <xsl:if test="category"> <xsl:if test="title"> <br/> </xsl:if> <small> <xsl:value-of select="category"/> </small> </xsl:if> </td> </tr> </xsl:if> <tr> <td width="128" vAlign="middle" ID="dovn"> <xsl:call-template name="date822toStr"> <xsl:with-param name="date" select="pubDate"/> </xsl:call-template> </td> <td ID="dovn"> <xsl:value-of disable-output-escaping="yes" select="description"/> </td> </tr> </xsl:template> <xsl:template match="image"> <xsl:element name="img"> <xsl:attribute name="src"><xsl:value-of select="url"/></xsl:attribute> <xsl:attribute name="style">float:left; padding: 10px;</xsl:attribute> </xsl:element> </xsl:template> <xsl:template match="language"> </xsl:template> </xsl:stylesheet> ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2010, 12:04 |
|
Как преобразовать дату из формата RSS в нормальный вид
|
|||
---|---|---|---|
#18+
Пардон забыл SRC поставить, вот оформленый как исходник XSL-файл преобразования RSS->HTM Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2010, 12:08 |
|
|
start [/forum/topic.php?fid=14&msg=36862610&tid=1333123]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 156ms |
0 / 0 |