资讯动态

XML Schema 日期/时间数据类型详解

发布时间:2026/8/31 6:54:00 来源:尧图企业网站定制
1. 引言在 XML 文档中日期和时间是常见的数据类型。XML SchemaXSD提供了一套内置的日期/时间数据类型用于描述和验证日期、时间、时区以及持续时间等信息。本文将详细介绍这些数据类型的语法、格式、取值范围并通过丰富的代码实例帮助读者快速掌握。2. 日期/时间数据类型概览XML Schema 内置了以下与日期/时间相关的数据类型数据类型说明示例date日期格式为 YYYY-MM-DD2024-05-20time时间格式为 HH:MM:SS14:30:00dateTime日期和时间组合2024-05-20T14:30:00duration持续时间P1Y2M3DT4H5M6SgYear年份2024gYearMonth年份和月份2024-05gMonth月份--05gMonthDay月份和日期--05-20gDay日期天---203. date 数据类型date类型用于表示完整的日期格式为YYYY-MM-DD其中 YYYY 表示四位年份MM 表示两位月份01-12DD 表示两位日期01-31。下面是一个使用date类型的 XSD 定义示例?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namebirthday typexs:date/ /xs:schema对应的合法 XML 实例birthday1990-06-15/birthday以下 XML 实例都是非法的因为它们不符合YYYY-MM-DD格式!-- 非法月份超出范围 -- birthday1990-13-15/birthday !-- 非法日期超出范围 -- birthday1990-06-32/birthday !-- 非法缺少前导零 -- birthday1990-6-15/birthday4. time 数据类型time类型用于表示一天中的某个时间格式为HH:MM:SS其中 HH 表示小时00-23MM 表示分钟00-59SS 表示秒00-59。秒部分可以包含小数例如14:30:00.5。下面是一个使用time类型的 XSD 定义示例?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namealarm typexs:time/ /xs:schema对应的合法 XML 实例alarm07:30:00/alarm带小数秒的合法实例alarm07:30:00.25/alarm以下实例是非法的!-- 非法小时超出范围 -- alarm24:30:00/alarm !-- 非法分钟超出范围 -- alarm07:60:00/alarm !-- 非法缺少秒部分 -- alarm07:30/alarm5. dateTime 数据类型dateTime类型用于同时表示日期和时间格式为YYYY-MM-DDTHH:MM:SS其中 T 是日期和时间之间的分隔符。该类型还支持时区信息可以在时间后面附加Z表示 UTC 时间或时区偏移量如08:00。下面是一个使用dateTime类型的 XSD 定义示例?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namepublishTime typexs:dateTime/ /xs:schema对应的合法 XML 实例publishTime2024-05-20T14:30:00/publishTime带时区的合法实例!-- UTC 时间 -- publishTime2024-05-20T14:30:00Z/publishTime !-- 东八区时间 -- publishTime2024-05-20T14:30:0008:00/publishTime !-- 西五区时间 -- publishTime2024-05-20T14:30:00-05:00/publishTime以下实例是非法的!-- 非法缺少 T 分隔符 -- publishTime2024-05-20 14:30:00/publishTime !-- 非法时区偏移量格式错误 -- publishTime2024-05-20T14:30:008:00/publishTime6. duration 数据类型duration类型用于表示一段持续时间其格式为P[n]Y[n]M[n]DT[n]H[n]M[n]S。其中 P 是必需的起始标记T 用于分隔日期部分和时间部分。各字段含义如下Y年M月在 T 之前表示月在 T 之后表示分钟D天H小时S秒下面是一个使用duration类型的 XSD 定义示例?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element nameprojectDuration typexs:duration/ /xs:schema对应的合法 XML 实例!-- 1年2个月3天 -- projectDurationP1Y2M3D/projectDuration !-- 4小时5分钟6秒 -- projectDurationPT4H5M6S/projectDuration !-- 1年2个月3天4小时5分钟6秒 -- projectDurationP1Y2M3DT4H5M6S/projectDuration !-- 仅表示30天 -- projectDurationP30D/projectDuration以下实例是非法的!-- 非法缺少 P 标记 -- projectDuration1Y2M3D/projectDuration !-- 非法T 后缺少时间字段 -- projectDurationP1DT/projectDuration7. 部分日期/时间数据类型XML Schema 还提供了一组用于表示部分日期/时间的数据类型包括gYear、gYearMonth、gMonth、gMonthDay和gDay。7.1 gYeargYear类型仅表示年份格式为YYYY。?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namefoundingYear typexs:gYear/ /xs:schema合法实例foundingYear1998/foundingYear7.2 gYearMonthgYearMonth类型表示年份和月份格式为YYYY-MM。?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namereleaseMonth typexs:gYearMonth/ /xs:schema合法实例releaseMonth2024-05/releaseMonth7.3 gMonthgMonth类型仅表示月份格式为--MM。?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namesaleMonth typexs:gMonth/ /xs:schema合法实例saleMonth--12/saleMonth7.4 gMonthDaygMonthDay类型表示月份和日期格式为--MM-DD。?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element nameanniversary typexs:gMonthDay/ /xs:schema合法实例anniversary--05-20/anniversary7.5 gDaygDay类型仅表示日期天格式为---DD。?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namepayDay typexs:gDay/ /xs:schema合法实例payDay---15/payDay8. 时区处理在 XML Schema 中date、time和dateTime类型都支持时区信息。时区可以通过以下两种方式表示UTC 时间在时间后面附加字母Z。时区偏移量在时间后面附加HH:MM或-HH:MM。下面是一个包含时区信息的完整示例?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element namemeeting xs:complexType xs:sequence xs:element namestartTime typexs:dateTime/ xs:element nameendTime typexs:dateTime/ /xs:sequence /xs:complexType /xs:element /xs:schema对应的 XML 实例meeting startTime2024-05-20T09:00:0008:00/startTime endTime2024-05-20T10:30:0008:00/endTime /meeting9. 自定义日期/时间类型除了使用内置类型还可以通过restriction定义自定义的日期/时间类型。例如限制日期必须晚于某个特定日期?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element nameeventDate xs:simpleType xs:restriction basexs:date xs:minInclusive value2024-01-01/ xs:maxInclusive value2024-12-31/ /xs:restriction /xs:simpleType /xs:element /xs:schema对应的合法 XML 实例eventDate2024-06-15/eventDate以下实例是非法的因为日期超出了限制范围!-- 非法早于最小值 -- eventDate2023-12-31/eventDate !-- 非法晚于最大值 -- eventDate2025-01-01/eventDate还可以使用pattern限制日期格式例如只允许特定格式的年份?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element nameyear xs:simpleType xs:restriction basexs:gYear xs:pattern value20[0-9]{2}/ /xs:restriction /xs:simpleType /xs:element /xs:schema对应的合法 XML 实例year2024/year以下实例是非法的!-- 非法不匹配模式 -- year1999/year10. 综合示例下面是一个综合示例展示如何在一个订单 XML 文档中使用多种日期/时间数据类型?xml version1.0 encodingUTF-8? xs:schema xmlns:xshttp://www.w3.org/2001/XMLSchema xs:element nameorder xs:complexType xs:sequence xs:element nameorderId typexs:string/ xs:element nameorderDate typexs:date/ xs:element nameorderTime typexs:time/ xs:element namedeliveryDeadline typexs:dateTime/ xs:element nameproductionYear typexs:gYear/ xs:element namewarrantyPeriod typexs:duration/ /xs:sequence /xs:complexType /xs:element /xs:schema对应的 XML 实例order orderIdORD-2024-001/orderId orderDate2024-05-20/orderDate orderTime14:30:00/orderTime deliveryDeadline2024-05-25T18:00:0008:00/deliveryDeadline productionYear2024/productionYear warrantyPeriodP2Y/warrantyPeriod /order11. 总结XML Schema 提供了丰富且灵活的日期/时间数据类型能够满足各种业务场景的需求。本文详细介绍了date、time、dateTime、duration以及部分日期/时间类型gYear、gYearMonth、gMonth、gMonthDay、gDay的语法和用法并通过大量代码实例展示了如何定义和使用这些类型。在实际开发中建议根据业务需求选择合适的数据类型并充分利用时区信息和自定义限制来确保数据的准确性和一致性。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价