Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正确的日期显示在JSpinner中,数据格式正确,可以插入数据库_Java_Sqlite_Date_Calendar_Spinner - Fatal编程技术网

Java 正确的日期显示在JSpinner中,数据格式正确,可以插入数据库

Java 正确的日期显示在JSpinner中,数据格式正确,可以插入数据库,java,sqlite,date,calendar,spinner,Java,Sqlite,Date,Calendar,Spinner,我正在为一个学校项目制定员工计划。员工将能够每周提供他们的可用性。我很难让JSpinner显示每个星期一的日期。此外,当用户在箭头上单击向上或向下时,我希望它只在即将到来或之前的星期一的日期循环。当将数据插入数据库时,我希望每天的开始和结束时间都是军用时间。对于本周,我希望它只是一年中本周的数字。将其插入数据库时,周是主键,应在同一周保持不变,即两名员工应能够为第5周创建可用性。员工ID也是主键和外键。数据库中的weekID是按升序创建的,即1,2,3。开始和结束时间如下所示:周一11月30日0

我正在为一个学校项目制定员工计划。员工将能够每周提供他们的可用性。我很难让JSpinner显示每个星期一的日期。此外,当用户在箭头上单击向上或向下时,我希望它只在即将到来或之前的星期一的日期循环。当将数据插入数据库时,我希望每天的开始和结束时间都是军用时间。对于本周,我希望它只是一年中本周的数字。将其插入数据库时,周是主键,应在同一周保持不变,即两名员工应能够为第5周创建可用性。员工ID也是主键和外键。数据库中的weekID是按升序创建的,即1,2,3。开始和结束时间如下所示:周一11月30日09:19:29 CST 2015,我希望它显示为09:19

以下是“周”微调器的代码:

    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;
    }

}