java - AxisTime 与 Java 时间换算

标签 java time

我正在尝试将 axis.types.Time 转换为 sql.Time,如下所示:

    org.apache.axis.types.Time axisTime = (org.apache.axis.types.Time) valore;
    Calendar calendarTime = axisTime.getAsCalendar();
    java.sql.Time jsqlT = java.sql.Time.valueOf( cal.get(cal.HOUR_OF_DAY) + ":" +  cal.get(cal.MINUTE) + ":" + cal.get(cal.SECOND) );

但我的转换之间有一个小时的差异。这与日光有关吗?我该如何解决这个问题?

(输出: 轴时间:20:45:00.000Z

日历:java.util.GregorianCalendar[time=-62167403700000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="欧洲/柏林",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=14 3,lastRule=java.util.SimpleTimeZone[id=欧洲/柏林,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1, endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=0,YEAR=2,MONTH=11,WEEK_OF_YEAR=1,WEEK_OF_MONTH=5,DAY_OF_MONTH=31,DAY_OF_YEAR=365,DAY_OF_WEEK=4,DAY_OF_WE EK_IN_MONTH=5,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=45,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=0]

SQLTIME 21:45:00

编辑:我通过使用字符串解决了这个问题...但是这个轴日期/时间对象对日光和时区不太友好,DateTime对象的麻烦更糟(再次,我强制解决方案忽略GMT/Daylights并使用字符串)

最佳答案

试试这个:

org.apache.axis.types.Time axisTime = (org.apache.axis.types.Time) valore;
Calendar calendarTime = axisTime.getAsCalendar();
java.sql.Time jsqlT = new java.sql.Time(calendarTime.getTimeInMillis());

这样您就不会遇到夏令时更改的问题。

关于java - AxisTime 与 Java 时间换算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397708/

相关文章:

time - 如何以毫秒获取当前时间

java - 更新最小变量 : min(a, b) 与 if 语句

java - 如何使用 java.net.http.HttpClient 记录请求/响应?

java - 使用 php 和 MySql 在 android 中检查复选框

c++ - 比较代码算法/片段的最正确(最好)的方法是什么?

python - 将列表转换为数据框时如何优化时间?

regex - Laravel 时间正则表达式

java - 如何制作检查输入验证的 do-while 循环

java - 如何在 KNIME 中要求/断言条件?

php - 获取最后一个星期四,但前提是它是此序列中的第二个星期四