XSD 内置的日期和时间类型一共有 8 个,全部基于 ISO 8601 标准。
下面直接给你「最全速查表 + 真实推荐写法 + 常见坑」,看完这张表你这辈子再也不会写错了。
| 类型 | 格式示例 | 是否带时区 | 典型业务场景 | 推荐程度 & 说明 |
|---|---|---|---|---|
| xs:date | 2025-11-28 | 可选 | 生日、订单日期、发布日期 | ★★★★★ 强烈推荐!最常用、最清晰 |
| xs:dateTime | 2025-11-28T14:30:25 | 可选 | 下单时间、日志时间、支付时间 | ★★★★★ 强烈推荐!标准时间戳 |
| xs:dateTimeStamp | 2025-11-28T14:30:25Z 或 +08:00 | 必须 | 必须带时区的关键时间(如支付、风控) | ★★★★ XSD 1.1 才支持,建议用 xs:dateTime + 时区 |
| xs:time | 14:30:25 或 14:30:25.123 | 可选 | 营业时间、预约时间段 | ★★ 单独用得少 |
| xs:gYearMonth | 2025-11 | 可选 | 信用卡有效期、月报标题 | ★★★ 信用卡到期年月必备 |
| xs:gYear | 2025 | 可选 | 出生年份、统计年份 | ★★ |
| xs:gMonthDay | –11-28 | 可选 | 每年固定日期(如黑色星期五、双11) | ★★ 纪念日、节假日常用 |
| xs:duration | P1Y2M10DT2H30M45S | — | 保质期、会员有效期 | ★ 可读性差,建议换算成数字天数 |
带时区写法(重点背下来)
| 写法 | 含义 | 推荐场景 |
|---|---|---|
| 2025-11-28 | 无时区(浮动时间) | 生日、节日、纯日期 |
| 2025-11-28+08:00 | 北京/上海/新加坡时间 | 中国大陆业务(最常用) |
| 2025-11-28Z | UTC 时间(格林威治) | 服务器日志、支付、风控 |
| 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:date | 2025-11-28 |
| 下单、支付、日志时间 | xs:dateTime | 2025-11-28T14:30:25+08:00(推荐) |
| 必须 UTC 时间 | xs:dateTime | 2025-11-28T06:30:25Z |
| 信用卡有效期 | xs:gYearMonth | 2028-11 |
| 会员/优惠券到期 | xs:date | 2026-12-31 |
| 每天固定时间(打卡、营业) | xs:time | 09:30:00 |
| 不要用 xs:dateTimeStamp(XSD 1.0 不支持) | — |
一句话总结:
中国项目永远只用 xs:date + xs:dateTime 就够了,99.99% 的业务这俩类型打天下!
需要我再给你一套「电商订单」「用户中心」「支付回调」三套完整的日期时间字段 XSD 模板吗?秒发!