XSD 日期和时间数据类型

XSD 内置的日期和时间类型一共有 8 个,全部基于 ISO 8601 标准。
下面直接给你「最全速查表 + 真实推荐写法 + 常见坑」,看完这张表你这辈子再也不会写错了。

类型格式示例是否带时区典型业务场景推荐程度 & 说明
xs:date2025-11-28可选生日、订单日期、发布日期★★★★★ 强烈推荐!最常用、最清晰
xs:dateTime2025-11-28T14:30:25可选下单时间、日志时间、支付时间★★★★★ 强烈推荐!标准时间戳
xs:dateTimeStamp2025-11-28T14:30:25Z 或 +08:00必须必须带时区的关键时间(如支付、风控)★★★★ XSD 1.1 才支持,建议用 xs:dateTime + 时区
xs:time14:30:25 或 14:30:25.123可选营业时间、预约时间段★★ 单独用得少
xs:gYearMonth2025-11可选信用卡有效期、月报标题★★★ 信用卡到期年月必备
xs:gYear2025可选出生年份、统计年份★★
xs:gMonthDay–11-28可选每年固定日期(如黑色星期五、双11)★★ 纪念日、节假日常用
xs:durationP1Y2M10DT2H30M45S保质期、会员有效期★ 可读性差,建议换算成数字天数

带时区写法(重点背下来)

写法含义推荐场景
2025-11-28无时区(浮动时间)生日、节日、纯日期
2025-11-28+08:00北京/上海/新加坡时间中国大陆业务(最常用)
2025-11-28ZUTC 时间(格林威治)服务器日志、支付、风控
2025-11-28T14:30:25+08:00带日期+时间+中国时区订单、支付、日志(最推荐)

真实项目中最推荐的 3 种写法(直接复制)

<!-- 1. 订单日期(只关心年月日) -->
<xs:element name="orderDate" type="xs:date"/>

<!-- 2. 下单时间(强烈推荐!中国大陆业务永远写这行) -->
<xs:element name="createTime" type="xs:dateTime"/>
<!-- 实例写法:2025-11-28T14:30:25+08:00  或  2025-11-28T14:30:25 -->

<!-- 3. 信用卡有效期(全球通用标准写法) -->
<xs:element name="expiry" type="xs:gYearMonth"/>
<!-- 实例写法:2028-11 -->

完整实战模板(直接保存到项目)

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- 生日(不需要时区) -->
  <xs:element name="birthday" type="xs:date"/>

  <!-- 下单时间(推荐带时区) -->
  <xs:simpleType name="ChinaDateTime">
    <xs:restriction base="xs:dateTime">
      <!-- 可选:强制要求带时区(XSD 1.1 才支持 pattern 精确到时区) -->
      <!-- <xs:pattern value=".+(\+08:00|Z)"/> -->
    </xs:restriction>
  </xs:simpleType>

  <!-- 信用卡到期时间(最标准)
  <xs:element name="cardExpiry" type="xs:gYearMonth"/>

  <!-- 会员到期时间(推荐用日期而不是 duration) -->
  <xs:element name="vipExpireDate" type="xs:date"/>

  <!-- 营业时间段(用 time) -->
  <xs:element name="openTime"  type="xs:time"/>   <!-- 09:00:00 -->
  <xs:element name="closeTime" type="xs:time"/>   <!-- 22:00:00 -->

</xs:schema>

合法实例对比(全部通过验证)

<birthday>1990-05-20</birthday>
<birthday>1990-05-20+08:00</birthday>        <!-- 也合法,但没必要 -->

<createTime>2025-11-28T14:30:25</createTime>
<createTime>2025-11-28T14:30:25+08:00</createTime>   <!-- 推荐 -->
<createTime>2025-11-28T06:30:25Z</createTime>   <!-- 同上时刻的 UTC -->

<cardExpiry>2029-06</cardExpiry>

<vipExpireDate>2026-12-31</vipExpireDate>

终极推荐表(直接背下来,永远不翻车)

业务场景永远写这个类型推荐实例写法
生日、成立日、节日xs:date2025-11-28
下单、支付、日志时间xs:dateTime2025-11-28T14:30:25+08:00(推荐)
必须 UTC 时间xs:dateTime2025-11-28T06:30:25Z
信用卡有效期xs:gYearMonth2028-11
会员/优惠券到期xs:date2026-12-31
每天固定时间(打卡、营业)xs:time09:30:00
不要用 xs:dateTimeStamp(XSD 1.0 不支持)

一句话总结:
中国项目永远只用 xs:date + xs:dateTime 就够了,99.99% 的业务这俩类型打天下!

需要我再给你一套「电商订单」「用户中心」「支付回调」三套完整的日期时间字段 XSD 模板吗?秒发!

文章已创建 2838

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部