我有一个java类,它给了我time_in
和time_out
。 Time_in
和time_out
也是我的sql数据库中的表。我希望找到可以计算为time_out - time_in
的工作时间。 Time_in和time_out是时间格式(hh:mm:ss)
。如何找工作时间?我尝试的代码不起作用,因为数据变量类型(我使用String)。但无论如何我无法用int数据类型做到这一点。
这是我的课程。我没有把time_out用来节省空间。假设有另一种方法可以像time_in一样检索time_out。
import java.sql.*;
public class blah {
//------MONDAY-------
private static String timeInQMonday;
private static String timeInMonday;
public static void main(String[] args) {
loadTimeInMonday();
loadWorkHour();
}
public static void loadWorkHour(){
//workHour = time_out - time_in;
}
public static void loadTimeInMonday(){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://SERVER2\\WASPDBEXPRESS;databaseName=WaspTime;integratedSecurity=true;";
Connection conn = DriverManager.getConnection(url);
System.out.println("Connection established!");
//Creating the statement
Statement stmt = conn.createStatement();
timeInQMonday = "SELECT CONVERT(VARCHAR(8), time_in, 108) AS time_in FROM [WaspTime].[dbo].[job_punch_card] WHERE emp_key=55 and punch_day= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)";
try {
stmt = conn.createStatement();
ResultSet rsTimeIn = stmt.executeQuery(timeInQMonday);
//-------DISPLAY THE RESULT-----
while (rsTimeIn.next()) {
timeInMonday = rsTimeIn.getString("time_in");
if(timeInMonday==null){
System.out.println("No Data");
}else{
System.out.println("clock in: " + timeInMonday);
}
}
///////////////////////////////
} catch (SQLException e ) {
System.out.println(e);
} finally {
if (stmt != null) { stmt.close(); }
}
} catch (Exception e) {
System.out.println("Connection Failed");
}
}
}
答案 0 :(得分:1)
我不确定我是否完全理解问题细节,但如果我是正确的,你需要工作的小时数。以下是您可以使用的代码:
import java.util.*; import java.lang.*; import java.io.*; import java.text.SimpleDateFormat; import java.util.concurrent.TimeUnit; class HoursWorked { public static void main (String[] args) throws java.lang.Exception { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:SS"); Date timeIn = sdf.parse("01:00:00"); Date timeOut = sdf.parse("09:30:00"); long workHourInMillis = timeOut.getTime() - timeIn.getTime(); System.out.println("Hours worked: " + TimeUnit.MILLISECONDS.toHours(workHourInMillis)); } }
答案 1 :(得分:0)
使用SimpleDateFormat
将字符串解析为日期。
将日期转换为Calender
。
从日历中获取一小时。 calender.get(Calender.HOUR)。
从那里你可以找到差异