想知道如何转换2009-09-18至9月18日xslt? 谢谢。如何转换2009-09-18至9月18日xslt
-1
A
回答
0
你的后端是什么语言?
如果是PHP很容易用date()函数来格式化日期时间字符串:http://uk.php.net/manual/en/function.date.php
您可以通过它关到XML格式格式化之前的日期。
+0
是的,这是真的和简单/最好的解决方案。但如果我必须通过xslt – Wondering 2009-09-17 10:39:24
0
使用具有大<xsl:choose>
的命名模板听起来像是一个合适的解决方案。棘手的部分是月份名称,其余部分相当微不足道,对吧?当然,您不需要已将其分解为指定的模板,即。
1
EXSLT具有将日期字符串一些扩展功能,请参阅: http://exslt.org/date/index.html
有了您的XSLT处理器原生支持这些一点点运气,否则大部分的日期函数有一个简单的XSLT 1.0实现可以包括
5
这里的一个纯XSLT 1.0溶液,其假定有效的输入:
<xsl:template match="/">
<newdate>
<xsl:call-template name="convertdate">
<xsl:with-param name="date" select="date"/>
</xsl:call-template>
</newdate>
</xsl:template>
<xsl:template name="convertdate">
<xsl:param name="date"/>
<xsl:variable name="day">
<xsl:value-of select="number(substring-after(substring-after($date,'-'), '-'))"/>
</xsl:variable>
<xsl:variable name="suffix">
<xsl:choose>
<xsl:when test="$day = '1'">st</xsl:when>
<xsl:when test="substring($day, string-length($day), 1) = '1' and not(starts-with($day, '1'))">st</xsl:when>
<xsl:when test="substring($day, string-length($day), 1) = '2' and not(starts-with($day, '1'))">nd</xsl:when>
<xsl:when test="substring($day, string-length($day), 1) = '3' and not(starts-with($day, '1'))">rd</xsl:when>
<xsl:otherwise>th</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="mo">
<xsl:value-of select="number(substring-before(substring-after($date,'-'), '-'))"/>
</xsl:variable>
<xsl:variable name="month">
<xsl:choose>
<xsl:when test="$mo = 1">Jan</xsl:when>
<xsl:when test="$mo = 2">Feb</xsl:when>
<xsl:when test="$mo = 3">Mar</xsl:when>
<xsl:when test="$mo = 4">Apr</xsl:when>
<xsl:when test="$mo = 5">May</xsl:when>
<xsl:when test="$mo = 6">Jun</xsl:when>
<xsl:when test="$mo = 7">Jul</xsl:when>
<xsl:when test="$mo = 8">Aug</xsl:when>
<xsl:when test="$mo = 9">Sept</xsl:when>
<xsl:when test="$mo = 10">Oct</xsl:when>
<xsl:when test="$mo = 11">Nov</xsl:when>
<xsl:when test="$mo = 12">Dec</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$day"/><xsl:value-of select="$suffix"/> <xsl:value-of select="$month"/>
</xsl:template>
0
沿着线:
<xsl:template name="friendly-date">
<xsl:param name="datestring" select="'yyyy-mm-dd'" />
<xsl:variable name="y" select="number(substring-before($datestring, '-'))" />
<xsl:variable name="r" select="number(substring-after($datestring, '-'))" />
<xsl:variable name="m" select="number(substring-before($r, '-'))" />
<xsl:variable name="d" select="number(substring-after($r, '-'))" />
<xsl:choose>
<xsl:when test="
$y >= 1970 and $y <= 9999
and
$m >= 1 and $m <= 12
and
$d >= 1 and $m <= 31
">
<xsl:value-of select="$d" />
<xsl:text> </xsl:text>
<xsl:choose>
<xsl:when test="$m = 1">
<xsl:value-of select="'Jan'" />
</xsl:when>
<!-- ... insert missing ... -->
<xsl:when test="$m = 12">
<xsl:value-of select="'Dec'" />
</xsl:when>
</xsl:choose>
<xsl:text> </xsl:text>
<xsl:value-of select="$y" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$datestring" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
请注意,这不会检查不可能的日期。这取决于你的意见,如果这可能成为一个问题或不。
除此之外,它不会执行国际日期格式。对于较不特别的解决方案,我建议像EXSLT一样查看EXSLT。
相关问题
- 1. 如何“2014年9月”转换为“2014年9月1日”在MySQL
- 2. 将日期文本转换为R中的日期值(即1962年9月30日至9/30/1962)?
- 3. 转换日期日(2011年5月12日至12日)
- 4. Excel 2013日期格式转换。 30 Jan,15 18:02:05至30.01.2015
- 5. 六角至12月转换
- 6. 如何转换日期4/7/2011 12:00:00 AM至2011年4月7日?
- 7. T-SQL转换2010年1月28日至2010年1月28日星期五
- 8. 如何转换毫秒自1970年1月1日00:00:00至日期2016年1月20日
- 9. 转换2012年2月17日至17/02/2012用jQuery
- 10. XSLT转换日期时间
- 11. 如何将日期时间转换为日/月/日/月/年yyyy格式
- 12. 如何将dateformat从日期转换为4月19日或4月22日
- 13. 如何将日期转换为年,月,日日期格式
- 14. Excel将文本转换为TEXT(2017年4月28日)至日期
- 15. PHP将日期格式从xml Feed转换为2011年11月25日至11月25日?
- 16. 如何转换NSMutableArray至NSMutableData?
- 17. 如何转换ALAssets至NSData?
- 18. 如何转换ScreenCoordinates至GeoPoints
- 19. 如何转换org.apache.spark.mllib.linalg.SparseVector至org.apache.spark.ml.linalg.SparseVector?
- 20. 如何转换Newton.Json.Linq.JToken至byte []?
- 21. 如何转换Int至Double?
- 22. 什么是日期格式字符串为9月29日,9月30日,10月2日等
- 23. 转换日期(年月日)到天数
- 24. 转换日期到月和日python?
- 25. 如何将整数日期转换为格式化日期字符串(即2012009至2009年2月1日)
- 26. C# - 如何转换26月/ 6/2016在13:14至2016年1月26日13时14分零零秒
- 27. 如何将给定日期转换为java,年,月,日
- 28. 如何将下面的日期转换为:2016-11-4 18:31:27至PHP和MySQL的NOV 04?
- 29. 如何转换从10/21/2009到星期三10月21日18:48:12 UTC + 0530 2009
- 30. 如何在amchart中格式化2013年9月6日至06-09-2013的日期(如图中所示)?
XSLT的版本?平台? – AnthonyWJones 2009-09-17 10:37:37
xsl:stylesheet version =“1.0” – Wondering 2009-09-17 10:38:34
你使用什么平台? – 2009-09-17 10:59:49