我正在开发一个使用C#脚本的XSLT。
我有一个函数DateParse,它应该取一个字符串;yyyy-MM-dd";。我希望它将字符串返回为存储为"0"的日期;yyyyMMdd";
我尝试了以下(除其他外(:
public DateTime DateParse(string dateString)
{
string result = DateTime.ParseExact(dateString, "yyyyMMdd",
System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
return result;
}
然而,我得到了以下错误:
Cannot implicitly convert type 'string' to 'System.DateTime'
有人有什么想法吗?我迷路了,已经尝试了很多。
问候
编辑:
根据请求,我在这里共享执行C#函数的xslt代码。
<xsl:variable name="ExtractDate" select="ms:DateParse(/Extraction/Row[1]/AsOfDate)" />
AsOfDate
是xlsx文件中的一列,其中包含值2021-09-10
或yyyy-MM-dd 格式的任何日期
我不知道2021-09-10
将如何使用DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture)
进行解析。
我想你想要DateTime.ParseExact(dateString, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)
。
您只想从日期字符串中删除-
字符吗?
在纯XSLT中,使用XPathtranslate
函数将-
字符转换为零长度字符串非常简单。
样本输入:
<Extraction>
<Row>
<AsOfDate>2021-09-10</AsOfDate>
</Row>
</Extraction>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="ExtractDate" select="
translate(
/Extraction/Row[1]/AsOfDate[1],
'-',
''
)
"/>
<result><xsl:value-of select="$ExtractDate"/></result>
</xsl:template>
</xsl:stylesheet>
结果:
<result>20210910</result>