我有一个字符串类型的数组,其中保存数据库中格式为“2014-09-02 15:19:59.000”的值。数组有 3600 行。现在我想根据这些值计算一小时前的时间在java中。如何做到这一点。 选择从数据库检索值的代码是:
public String[] database_Current() {
List < String > timeStr = new ArrayList < String > ();
try {
con = getConnection();
String sql = "select max(logtime) from vacuum_analog_1mins";
clstmt = con.prepareCall(sql);
clstmt.execute();
rs = clstmt.getResultSet();
while (rs.next()) {
timeStr.add(rs.getString(1).substring(11, 16));
}
} catch (Exception e) {
System.out.println("\nException in Bean in getDbTable(String code):" + e);
} finally {
closeConnection();
}
// I would return the list here, but let's convert it to an array
atime = timeStr.toArray(new String[timeStr.size()]);
return atime;
}
最佳答案
你的问题有点令人困惑。在您的问题中,您只能从包含 max(logtime) 单列的查询 "select max(logtime) from Vacuum_analog_1mins"
中获取单行以及您存储在 timeStr 数组中的单个值。我不明白在这里使用数组来存储单个值的目的是什么,即使你每次都会得到单个值。
我得到的是您希望比从数据库获取的实际时间少一小时。
示例:
从数据库获取:
currentDateFromDB = 2014-09-02 15:19:59.000
你想要拥有:
changedDate = 2014-09-02 14:19:59.000
为此,您可以使用 java 的 Calendar 类:
//currentDateFromDB in string form from db
Date parsedDate = new Date();
try {
SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
parsedDate = format.parse(currentDateFromDB);
}
catch(ParseException pe) {
throw new IllegalArgumentException();
}
Calendar calendar=Calendar.getInstance();
calendar.setTime(parsedDate); //set date here
int hours = calendar.get(Calendar.HOUR_OF_DAY);
hours--; //reduce by one
calendar.set(Calendar.HOUR_OF_DAY, hours); //again set desired hours
Date date=calendar.getTime(); //get modified time
关于java - 如何从java中保存数据库值的字符串数组计算一小时前的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098556/