Java 正确的日期显示在JSpinner中,数据格式正确,可以插入数据库
我正在为一个学校项目制定员工计划。员工将能够每周提供他们的可用性。我很难让JSpinner显示每个星期一的日期。此外,当用户在箭头上单击向上或向下时,我希望它只在即将到来或之前的星期一的日期循环。当将数据插入数据库时,我希望每天的开始和结束时间都是军用时间。对于本周,我希望它只是一年中本周的数字。将其插入数据库时,周是主键,应在同一周保持不变,即两名员工应能够为第5周创建可用性。员工ID也是主键和外键。数据库中的weekID是按升序创建的,即1,2,3。开始和结束时间如下所示:周一11月30日09:19:29 CST 2015,我希望它显示为09:19 以下是“周”微调器的代码:Java 正确的日期显示在JSpinner中,数据格式正确,可以插入数据库,java,sqlite,date,calendar,spinner,Java,Sqlite,Date,Calendar,Spinner,我正在为一个学校项目制定员工计划。员工将能够每周提供他们的可用性。我很难让JSpinner显示每个星期一的日期。此外,当用户在箭头上单击向上或向下时,我希望它只在即将到来或之前的星期一的日期循环。当将数据插入数据库时,我希望每天的开始和结束时间都是军用时间。对于本周,我希望它只是一年中本周的数字。将其插入数据库时,周是主键,应在同一周保持不变,即两名员工应能够为第5周创建可用性。员工ID也是主键和外键。数据库中的weekID是按升序创建的,即1,2,3。开始和结束时间如下所示:周一11月30日0
Date datef = new Date();
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
SpinnerDateModel ehm = new SpinnerDateModel(datef, null, null,
c.WEEK_OF_YEAR);
weekOf = new javax.swing.JSpinner(ehm);
JSpinner.DateEditor wo = new JSpinner.DateEditor(weekOf,"MM/dd/yyyy");
weekOf.setEditor(wo);
weekOf.setModel(new javax.swing.SpinnerDateModel());
时间微调器的代码如下(时间在这些微调器中正确显示,但只是输出不正确)
这就是我为所有时间选择器设置代码的方式,显然变量不同
以下是所执行操作的代码:
public void btnAvailUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAvailUpdateActionPerformed
Date weekID = (Date) weekOf.getValue();
Date mstart = (Date) monStart.getValue();
Date mend = (Date) monEnd.getValue();
Date tstart = (Date) tuesStart.getValue();
Date tend = (Date) tuesEnd.getValue();
Date wstart = (Date) wedStart.getValue();
Date wend = (Date) wedEnd.getValue();
Date thstart = (Date) thursStart.getValue();
Date thend = (Date) thursEnd.getValue();
Date fstart = (Date) friStart.getValue();
Date fend = (Date) friEnd.getValue();
try {
PreparedStatement st = conn.prepareStatement("INSERT INTO Availability (Week_ID, Employee_ID, monStart, monFinish, tuesStart, tuesFinish, wedStart, wedFinish, thursStart, thursFinish, friStart, friFinish) Values(?,?,?,?,?,?,?,?,?,?,?,?)");
st.setString(1, String.valueOf(weekID));
st.setInt(2, loginScreen.dbid);
st.setString(3, String.valueOf(mstart));
st.setString(4, String.valueOf(mend));
st.setString(5, String.valueOf(tstart));
st.setString(6, String.valueOf(tend));
st.setString(7, String.valueOf(wstart));
st.setString(8, String.valueOf(wend));
st.setString(9, String.valueOf(thstart));
st.setString(10, String.valueOf(thend));
st.setString(11, String.valueOf(fstart));
st.setString(12, String.valueOf(fend));
st.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
//System.out.println(weekID);
}//GN-LAST:event_btnAvailUpdateActionPerformed
任何帮助或建议都将不胜感激。您的数据库表不是很灵活。如果有人需要在星期三请假,您的字符串值是空的(我希望是空的) 更灵活的数据库表如下所示:
Availability
------------
Employee ID
Start Time
End Time
其中开始时间和结束时间为Unix时间,表示自1970-01-01 00:00:00 UTC以来的秒数。此表的主要索引是(员工ID、开始时间描述)。这样,员工可以在周一两班倒,周三休息
接下来,您将创建Java对象来保存数据库信息。在本例中,您可能需要两个Java对象
第一个Java对象是Shift类
package com.ggl.testing;
import java.util.Date;
public class Shift {
private Date startTime;
private Date endTime;
public Shift(Date startTime, Date endTime) {
this.startTime = startTime;
this.endTime = endTime;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
第二个Java对象是EmployeeWorkWeek类
package com.ggl.testing;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class EmployeeWorkWeek {
private final int employeeID;
private final Date mondayDate;
private List<Shift> shifts;
public EmployeeWorkWeek(int employeeID, Date mondayDate) {
this.employeeID = employeeID;
this.mondayDate = mondayDate;
this.shifts = new ArrayList<>();
}
public List<Shift> getShifts() {
return shifts;
}
public void addShift(Shift shift) {
this.shifts.add(shift);
}
public void clearShifts() {
this.shifts.clear();
}
public int getEmployeeID() {
return employeeID;
}
public Date getMondayDate() {
return mondayDate;
}
}
package com.ggl.testing;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
公共课雇员工作周{
私人最终国际雇员ID;
私人最终日期星期一;
私人名单转移;
公共雇员工作周(国际雇员ID,日期星期一){
this.employeeID=employeeID;
this.mondayDate=mondayDate;
this.shifts=新的ArrayList();
}
公共列表getShifts(){
返回班次;
}
公共无效添加移位(移位移位){
this.shift.add(shift);
}
公众假期{
这个.shift.clear();
}
public int getEmployeeID(){
返回员工ID;
}
公共日期getMondayDate(){
返回星期一日期;
}
}
这个答案已经很长了,所以我就到此为止
首先,为应用程序创建模型
其次,创建视图
第三,创建将模型和视图连接在一起的控制器。在Swing中,这是操作侦听器和项目侦听器
package com.ggl.testing;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class EmployeeWorkWeek {
private final int employeeID;
private final Date mondayDate;
private List<Shift> shifts;
public EmployeeWorkWeek(int employeeID, Date mondayDate) {
this.employeeID = employeeID;
this.mondayDate = mondayDate;
this.shifts = new ArrayList<>();
}
public List<Shift> getShifts() {
return shifts;
}
public void addShift(Shift shift) {
this.shifts.add(shift);
}
public void clearShifts() {
this.shifts.clear();
}
public int getEmployeeID() {
return employeeID;
}
public Date getMondayDate() {
return mondayDate;
}
}