java - 我怎样才能得到java中的日期的月份日以在甘特图中使用

标签 java date dayofmonth

我想在java中获取日期的月份

我尝试 getday() 但它返回星期几

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

  j+=2;k+=2;

}

最佳答案

我研究了您之前的 Stack Overflow 问题以了解一些背景信息。请不要指望 Stack Overflow 用户通常会这样做。他们不会。

据我了解,Taskorg.jfree.data.gantt.Task来自 JFreeChart,其构造函数需要两个 java.util.Date参数(开始和结束)。您正在获取java.sql.Date来自数据库的对象。

虽然您不能(合理地)更改 JFreeChart,但从 JDBC 4.2 开始,您可以利用现代化的 LocalDate对象而不是老式的java.sql.Date数据库中的对象:

    while (rs.next()) {
        String a = 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(a,  
                Date.from(startDate.atStartOfDay().toInstant(ZoneOffset.UTC)),
                Date.from(endDate.atStartOfDay().toInstant(ZoneOffset.UTC))  
                ) 
        );
    }

我发现在构建 Task 之前,不要将获取的数据放入单独的列表中并再次将其取出,这样更简单。对象。在您的代码中,请按照您认为最好的方式进行操作。

附注getXxx java.sql.Date的方法和java.util.Date已被弃用,因为它们跨时区工作不可靠,因此即使您无法避免这些类,也不要调用这些方法。如果您确实得到 java.sql.Date从某个地方,要做的第一件事就是调用它的 toLocalDate​将其转换为现代的方法LocalDate .

编辑:您在使用嵌套方法调用的单个语句中做了很多事情。我同意巴兹尔· boolean 克(Basil Bourque)的评论,即读者(和你自己?)可能很难理解这一点。我相信这也是人们(包括我自己)不理解你的问题的部分原因。我们建议分手。一个例子是:

        Instant startInstant = startDate.atStartOfDay().toInstant(ZoneOffset.UTC);
        Date startUtilDate = Date.from(startInstant);
        // Similarly for end date

        Task newTask = new Task(a, startUtilDate, endUtilDate);
        series1.add(newTask);

虽然比较啰嗦,但现在每个步骤都很容易遵循。

而不是 startDate.atStartOfDay().toInstant(ZoneOffset.UTC)我通常这样做startDate.atStartOfDay(ZoneOffset.UTC).toInstant() ,但这是品味或习惯的问题。两种情况的结果是相同的。

链接

关于java - 我怎样才能得到java中的日期的月份日以在甘特图中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299622/

相关文章:

java - 如何在 Java 中延迟消息对话框?

java - 如何获得管理权限以在java中打开Windows vista/7 C盘中的目录

apache-flex - 空气应用受计算机设定日期影响

javascript - getDay() 方法 javascript 的问题

java - 无法在 Java 中更改日历 DAY_OF_MONTH

java - 有没有提供每月第一天的函数?

java - 限制 JMS 目标实例

java - 使用反射调用构造函数会产生 NoSuchMethodException

r - 如何检查日期是否在 R 中的间隔列表内?

java - 从该月的某一天减去 x 天