java两个>>和三个>>>_H2DB和Java,大约>两个小时的差异

我正在开发一个比赛计时系统,在某些情况下,我需要从H2DB中检索一个时间对象。像其bretheren(或sisteren)一样,time数据类型是相对于1970年1月1日的,并且以SQL形式以“

hh:mm:ss”格式表示,日期默认情况下设置为01-01-1970。默认情况下,它映射到“

java.sql.Time”对象。作为值得信赖的padawan,我将以下代码编码为显示目的,将小时与分钟分开。

if(race.getCutOffTime()!=null){

long cutOffHour=(race.getCutOffTime().getTime())/(3600000);

int cutOffMinute=(int)(race.getCutOffTime().getTime()%(60*60*1000));

System.out.println(cutOffHour+":"+cutOffMinute);

}

但是,Java的时间处理方式会产生臭味,因为这些函数输出意外的值,例如,我的数据库中的以下语句给出的输出为3:30。

INSERT INTO MagEye.Races(RaceName, EventID,CutOffTime)

VALUES ('TEST', SELECT EventID FROM MagEye.Events

WHERE EventName='Sabrina Love',TIME '5:50:00');

更改此语句以反映时间“ 0:0:0”,给我一个值“ -2:00”,这是我做错了吗?先感谢您)。

*_根据要求进行 _*编辑 ,这是我的数据库代码:

表创建语句:

CREATE TABLE IF NOT EXISTS MagEye.Races (RaceID INT PRIMARY KEY AUTO_INCREMENT , RaceName VARCHAR(100) ,EventID INT, Description TEXT, MaxEntrants INT, MinAge INT, MaxAge INT, RacePrefix VARCHAR (5), TimingMethod CHAR(1), CutOffTime TIME, RaceEnd TIMESTAMP,Finished BOOLEAN DEFAULT FALSE, Autostart BOOLEAN, FOREIGN KEY(EventID) REFERENCES MagEye.Events(EventID));

插入声明:

INSERT INTO MagEye.Races(RaceName, EventID,CutOffTime) VALUES ('TEST', SELECT EventID FROM MagEye.Events WHERE EventName='Sabrina Love',TIME '5:50:00');

恢复:

raceDB.result = raceDB.state.executeQuery("SELECT * FROM MagEye.Races WHERE EventID=" + eventID + " ORDER BY RaceName");

java.util.ArrayList races = new java.util.ArrayList<>();

while (raceDB.result.next()) {

Race thisRace;

String timingMethodString = raceDB.result.getString("TimingMethod");

Race.TimingMethod timingMethod = null;

if (timingMethodString != null) {

timingMethod = Race.TimingMethod.valueOf(timingMethodString);

} else {

timingMethod = Race.TimingMethod.MANUAL;

}

thisRace = new Race(raceDB.result.getInt("RaceID"), event, raceDB.result.getString("RaceName"), raceDB.result.getString("Description"), raceDB.result.getInt("MaxEntrants"), raceDB.result.getInt("MinAge"), raceDB.result.getInt("MaxAge"), raceDB.result.getString("RacePrefix"), timingMethod,(raceDB.result.getTime("CutOffTime")), raceDB.result.getBoolean("Autostart"));

thisRace = new Race(raceDB.result.getInt("RaceID"), event, raceDB.result.getString("RaceName"), raceDB.result.getString("Description"), raceDB.result.getInt("MaxEntrants"), raceDB.result.getInt("MinAge"), raceDB.result.getInt("MaxAge"), raceDB.result.getString("RacePrefix"), timingMethod,(raceDB.result.getTime("CutOffTime")), raceDB.result.getBoolean("Autostart"));

显示:

if(race.getCutOffTime()!=null){

long cutOffHour=(int)(race.getCutOffTime().getTime())/(3600000);

RacesCutOffLength.setText(cutOffHour+"");

int cutOffMinute=(int)(race.getCutOffTime().getTime()%(60*60*1000));

this.RacesMinutes.setText(cutOffMinute+"");

}

else{

RacesCutOffLength.setText("0");

RacesMinutes.setText("0");

}

编辑 :我已经决定将Time对象替换为长本原语

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值