deHaar、DevX和Ole VV的答案是正确的,并引导您朝着正确的方向前进。
如果你想坚持javax.xml.datatype.Duration
,有一个简单的方法,纯粹使用 OOTB (Out-Of-The-Box) API,来实现你想要的。它就像将java.util.Calendar
实例传递给javax.xml.datatype.Duration#getTimeInMillis
并使用 将返回的值转换为秒一样简单TimeUnit.MILLISECONDS.toSeconds
。
演示:
import java.util.Calendar;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
public class Main {
public static void main(String[] args) throws DatatypeConfigurationException {
Integer hours = 3, days = 4, minutes = 20;
javax.xml.datatype.Duration duration = DatatypeFactory.newInstance().newDuration(true, 0, 0,
days,
hours,
minutes,
0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
long seconds = TimeUnit.MILLISECONDS.toSeconds(duration.getTimeInMillis(calendar));
System.out.println(seconds);
}
}
输出:
357600