在XSLT1.0或XSLT2.0中将12小时格式日期转换为24小时
我需要将日期从12小时格式转换为24小时格式。在XSLT1.0或XSLT2.0中将12小时格式日期转换为24小时
输入: 2016年1月27日下午7时01分36秒
预期输出: 201601271901(为yyyymmddhhmm)
我用格式DATETIME()在我的代码功能,我得到错误
<xsl:value-of select="format-dateTime(part_need/promised_dt,'[Y0001][M01][D01][H01][m01]')"/>
错误:
说明:FORG0001:无效的日期时间值“2016年1月27日下午7时01分36秒”(非数字年份组成)
在这个问题上
您的输入不是有效的ISO 8601日期/时间,因此您无法使用内置的日期/时间功能。
尝试,而不是像(XSLT 2.0):
<xsl:template match="inputdate">
<xsl:copy>
<xsl:variable name="dte" select="tokenize(.,'/|\s|:')" />
<xsl:value-of select="$dte[3]" />
<xsl:value-of select="$dte[1]" />
<xsl:value-of select="$dte[2]" />
<xsl:variable name="h24" select="xs:integer($dte[4]) mod 12 + 12 * xs:integer($dte[7]='PM')" />
<xsl:value-of select="format-number($h24, '00')" />
<xsl:value-of select="$dte[5]" />
</xsl:copy>
</xsl:template>
注意,这里假设你的日子是零填充到两个数字(因为是你月)。
如果您需要在多个地方使用此功能,请考虑将其转换为功能。
format-dateTime请帮助需要一个xs:dateTime?
作为第一个参数。 part_needed/promised_dt
是node
。
如果您具有标准ISO格式的日期时间(例如“2006-01-27T19:01:36”),则可以使用xs:dateTime(part_needed/promised_dt)
。
撒克逊没有非标准的日期时间解析器帮助器,因此您需要使用xs:dateTime(xs:date(year,month,day), xs:time(hours, minutes, seconds))
构造函数并使用类似substring(part_needed/promised_dt,1,2)
的内容来获取每个日期/时间部分。
感谢您对该问题的解释。我会尝试以上功能 – Jyo
感谢您的回复。它正在使用上面的代码。 – Jyo