如何正确初始化org.apache.xmlbeans.GDuration对象并设置时长值
问题原因
org.apache.xmlbeans.GDuration的全参构造方法签名如下:
GDuration(int sign, int year, int month, int day, int hour, int minute, int second, BigDecimal fraction)
- 第一个参数
sign是时长符号位,仅支持1(正时长)、-1(负时长)两个合法值,你传入0属于非法值,是触发初始化报错的核心原因 - 最后一个参数为小数秒值,无特殊需求时传入
BigDecimal.ZERO即可,避免空指针风险
可用初始化示例
首先导入必要依赖类:
import org.apache.xmlbeans.GDuration; import java.math.BigDecimal;
具体场景示例:
- 初始化15分钟(对应ISO格式PT15M):
static final GDuration FIFTEEN_MINUTES = new GDuration(1, 0, 0, 0, 0, 15, 0, BigDecimal.ZERO);
- 初始化10秒(对应ISO格式PT10S):
static final GDuration TEN_SECONDS = new GDuration(1, 0, 0, 0, 0, 0, 10, BigDecimal.ZERO);
- 其他常用场景:
- 2小时30分钟:
new GDuration(1, 0, 0, 0, 2, 30, 0, BigDecimal.ZERO) - 1天5小时:
new GDuration(1, 0, 0, 1, 5, 0, 0, BigDecimal.ZERO) - 负30秒(向前偏移30秒):
new GDuration(-1, 0, 0, 0, 0, 0, 30, BigDecimal.ZERO)
- 2小时30分钟:
效果校验
调用toString()方法即可输出标准ISO 8601时长格式,验证是否符合预期:
System.out.println(FIFTEEN_MINUTES); // 输出PT15M System.out.println(TEN_SECONDS); // 输出PT10S
内容的提问来源于stack exchange,提问作者User_67128
相关产品推荐
相关产品推荐

