如何在WSO2 ESB中以Property实现12小时制转24小时制
在WSO2 ESB中通过Property实现12小时制时间转24小时制
你可以利用WSO2 ESB的Property中介器结合XPath 2.0的日期时间处理函数,实现12小时制时间到24小时制数字格式的转换。以下是具体实现方案:
核心实现思路
- 将输入的12小时制时间(如
6:00PM)转换为符合xs:dateTime规范的格式 - 使用
format-dateTime函数将其格式化为24小时制的时分组合 - 可选处理:去除开头的前导零(如将
0900转为900)
配置示例
假设输入时间存储在名为inputTime的属性中,可通过以下Property中介器完成转换:
<!-- 定义输入的12小时制时间 --> <property name="inputTime" value="6:00PM" scope="default" type="STRING"/> <!-- 执行转换并存储结果 --> <property name="convertedTime" expression="replace(format-dateTime(xs:dateTime(concat('1970-01-01T', replace($ctx:inputTime, '([0-9]+):([0-9]+)(AM|PM)', '$1:$2:00 $3'))), '[H01][m01]'), '^0', '')" scope="default" type="STRING"/>
表达式解析
replace($ctx:inputTime, '([0-9]+):([0-9]+)(AM|PM)', '$1:$2:00 $3'):将6:00PM转换为6:00:00 PM,补全秒数并规范时段格式xs:dateTime(concat('1970-01-01T', ...)):拼接固定日期与处理后的时间,构造合法的xs:dateTime对象format-dateTime(..., '[H01][m01]'):将日期时间格式化为24小时制的两位小时+两位分钟,如1800replace(..., '^0', ''):移除结果开头的前导零(若不需要此处理,可删除该部分)
验证示例
- 输入:
6:00PM→ 输出:1800 - 输入:
9:30AM→ 输出:930(若保留前导零则为0930)
内容的提问来源于stack exchange,提问作者sathish Sankarzz
相关产品推荐
相关产品推荐

