我收到这个错误
The string '01/06/2015' is not a valid AllXsd value
我的 XSD 是:
<xs:element name="PassingDate">
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
我正在将我的 XML 读入 DataSet
,然后我必须根据 PassingDate
执行排序。
如果我现在将 PassingDate
转换为数据类型日期,那么排序将仅基于字符串进行。这将导致错误的输出。
如何在 dd/MM/yyyy
中格式化日期?
最佳答案
您的 PassingDate
声明不会重新排列日期的组成部分——它只是进一步将这些组成部分限制在它们原来的位置。
您可以切换到纯正则表达式约束来接近:
<xs:element name="PassingDate">
<xs:simpleType name="date">
<xs:restriction base="xs:token">
<xs:pattern value="[0-3][0-9]/[0-1][0-9]/[0-9]{4}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
注意事项:
- 此方法不能完全防止天数过多的无效日期 对于给定的月份、闰年/平年等。
YYYY-MM-DD
更适合国际交流。YYYY-MM-DD
更利于互操作性YYYY-MM-DD
更适合排序。
建议:为您的 XML 使用标准 type="xs:date"
并仅本地化数据输入/显示的日期格式。如果您坚持使用使用非标准日期格式的 XML,请研究预处理/后处理或编写自定义代码。您可能会从 here 得到一些想法。 .
关于c# - 字符串 '01/06/2015' 不是有效的 AllXsd 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209945/