java - 如何用java中的数据库中的日期绘制甘特图

标签 java gantt-chart

我在从数据库获取任务的开始日期和结束日期来绘制图表时遇到问题

public IntervalCategoryDataset getCategoryDataset() {
    conn = ConnectDB.ConnectDB();
    TaskSeriesCollection dataset = new TaskSeriesCollection();

    String sql = "SELECT `TITRE`, `DATE DEBUT Prévi`, `DATE FIN prévi` FROM `projet`;";
    try {
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery(sql);
        while (rs.next()) {
            String a = rs.getString("TITRE");
            Date StartDate = rs.getDate("DATE DEBUT Prévi");
            Date EndDate = rs.getDate("DATE FIN prévi");
            Names.add(a);
            Dates.add(StartDate);
            Dates.add(EndDate);
            ++count;
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
    int j = 0;
    int k = 1;

    TaskSeries series1 = new TaskSeries("Estimated Date");
    for (int i = 0; i < count; i++) {
        series1.add(new Task(Names.get(i),
                Date.from(LocalDate.of(Dates.get(j).getYear(), Dates.get(j).getMonth(), Dates.get(j).getDay())
                        .atStartOfDay()
                        .toInstant(ZoneOffset.UTC)),
                Date.from(LocalDate.of(Dates.get(k).getYear(), Dates.get(k).getMonth(), Dates.get(k).getDay())
                        .atStartOfDay()
                        .toInstant(ZoneOffset.UTC))));
    }

    dataset.add(series1);
    return dataset;
}

我希望每个任务都有其图表,但所有任务都有相同的图表。

最佳答案

您应该应用单个循环,此外还可以使用 getObject(index, LocalDate.class) 或 - 如果您的驱动程序不支持前一个选项 - java.sql。 Date.toLocalDate():

public IntervalCategoryDataset getCategoryDataset() {
    conn = ConnectDB.ConnectDB();
    TaskSeriesCollection dataset = new TaskSeriesCollection();

    TaskSeries series1 = new TaskSeries("Estimated Date");
    String sql = "SELECT `TITRE`, `DATE DEBUT Prévi`, `DATE FIN prévi` FROM `projet`;";
    try {
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery(sql);
        while (rs.next()) {
            String name = rs.getString("TITRE");
            LocalDate startDate = rs.getObject("DATE DEBUT Prévi", LocalDate.class);
            LocalDate endDate = rs.getObject("DATE FIN prévi", LocalDate.class);

            series1.add(new Task(name,
                Date.from(startDate.atStartOfDay().toInstant(ZoneOffset.UTC)),
                Date.from(endDate.atStartOfDay().toInstant(ZoneOffset.UTC)));
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e.getMessage());
    }

    dataset.add(series1);
    return dataset;
}

关于java - 如何用java中的数据库中的日期绘制甘特图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56296842/

相关文章:

javascript - 我该如何修复 'Error: <rect> attribute x: Expected length, "NaNNaN”

java - 如何在 equals 函数中调用子类方法中的 protected 变量?

java - Groovy + Java接口(interface)继承问题

java - 使用jsp页面导入时Cannot Find Symbol错误

java - 使用 Java Jar 实用程序

python - 如何使用 python 或 pyqt 制作甘特图

php - Javascript 图表未插入 DIV 容器中

linux - 如何制作 Linux 调度程序甘特图?

java - AppCompatActivity 未观察到 ViewModel

javascript - Highcharts 的导航器和依赖箭头 (ganttChart)