【问题标题】:Count days between dates stored in mysql database and current date with netbeans java使用netbeans java计算存储在mysql数据库中的日期和当前日期之间的天数
【发布时间】:2020-02-10 21:43:42
【问题描述】:

我需要计算 2 个日期之间的天数之差。第一个日期应该是当前日期,下一个日期已经在 Mysql 数据库中找到了..

mysql存储日期的日期格式为yyyy-MM-dd

我只是通过文本字段获取存储的日期 所以请帮我解决这个问题!

【问题讨论】:

  • 我投票决定将此问题作为题外话结束,因为“要求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作摘要,以及对你正在解决它的困难”。
  • 实际上,伙计,这不是为了家庭作业.. 我的一个表弟为一家足球俱乐部开发了一个系统,以便他想为 trnasafering 球员编写一些代码......他让我帮忙,所以我来到堆栈溢出,不小心遇到了你!...谢谢你的cmets
  • 无论是否是家庭作业,您都应该在发帖前展示一些研究成果。 Stack Overflow 不是帮助论坛。如果您只想指定您希望其他人为您完成的工作,那么这可能不是最好的询问位置。请参阅How do I ask a good question? 了解更多信息。
  • 是的...感谢您的评论..我找到了回家工作的方法..谢谢

标签: java mysql sql netbeans jdatechooser


【解决方案1】:
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

 private void CountDaysActionPerformed(java.awt.event.ActionEvent evt) {                                          

        //check your zone Id and place it on the double quote 
        ZoneId z=ZoneId.of("Asia/Colombo");
        LocalDate today=LocalDate.now(z);

        String currentDate=today.toString();

        SimpleDateFormat myformat=new SimpleDateFormat("yyyy-MM-dd");

        String firstDate1 =jTextField1.getText();
        String secondDate1 =currentDate;

        try{

            Date firstDate = myformat.parse(firstDate1);
            Date secondDate = myformat.parse(secondDate1);

            long dif = secondDate.getTime()- firstDate.getTime();

            int daysBetween =(int) (dif/(1000*60*60*24));


            //answer wil be the difference between your current date and the date you provided in the jTextField1
            System.out.println(daysBetween);


        }catch(Exception e){
            e.printStackTrace();
        }


    }

【讨论】:

    【解决方案2】:

    java.time

    如果您将日期存储为文本,则解析为LocalDate

    LocalDate localDate = LocalDate.parse( input ) ;
    

    如果您更正确地将日期存储在类似于 SQL 标准 DATE 类型的列中,请检索为 LocalDate

    LocalDate localDate = myResultSet.getObject( … , LocalDate.class ) ;
    

    捕获某些特定地区(时区)的人们使用的挂钟时间中的当前日期。

    ZoneId z = ZoneId.of( "America/Montreal" ) ;
    
    LocalDate today = LocalDate.now( z ) ;
    

    以天为单位计算跳跃时间。

    long days = ChronoUnit.DAYS.between( localDate , today ) ;
    

    提示:要表示日期范围,一对LocalDateobjects,请将ThreeTen-Extra 库添加到您的项目中。使用LocalDateRange 类。

    LocalDateRange range = LocalDateRange.of( localDate , today ) ;
    

    关于java.time

    java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

    要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

    Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

    您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。

    从哪里获得 java.time 类?

    ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2019-01-24
      • 2012-02-03
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多