当前位置: 首页 > 面试题库 >

我在Joda-Time的两个日期之间的时间错误

东方栋
2023-03-14
问题内容

无论我做什么,都会得到不正确的结果。任何人都可以给我一些建议:)。

这是我程序的代码,负责获取两个日期之间的时间。

我得到一个结果,但问题是它不正确,并且在查找问题时遇到了麻烦。

我必须在我的项目中去乔达图书馆。

if (timerightnow.isSelected()) {
            DateFormat getdate = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
            Date getdate1 = new Date();

            String datenow = getdate1.toString();

            String monthnow = datenow.substring(4, 7);
            String daynow = datenow.substring(8,10);
            String hournow = datenow.substring(11,19);
            String yearnow = datenow.substring(25, 29);

            if (monthnow.equalsIgnoreCase("jan"))
                monthnow = "01";
            if (monthnow.equalsIgnoreCase("feb"))
                monthnow = "02";
            if (monthnow.equalsIgnoreCase("mar"))
                monthnow = "03";
            if (monthnow.equalsIgnoreCase("apr"))
                monthnow = "04";
            if (monthnow.equalsIgnoreCase("may"))
                monthnow = "05";
            if (monthnow.equalsIgnoreCase("jun"))
                monthnow = "06";
            if (monthnow.equalsIgnoreCase("jul"))
                monthnow = "07";
            if (monthnow.equalsIgnoreCase("agu"))
                monthnow = "08";
            if (monthnow.equalsIgnoreCase("sep"))
                monthnow = "09";
            if (monthnow.equalsIgnoreCase("oct"))
                monthnow = "10";
            if (monthnow.equalsIgnoreCase("nov"))
                monthnow = "11";
            if (monthnow.equalsIgnoreCase("dec"))
                monthnow = "12";

            String timenow = monthnow + "/" + daynow + "/" + yearnow + " " + hournow;
            String timetotext = timeto.getText();
            SimpleDateFormat date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");


            Date datestart = null;
            Date dateend = null;



             try {

                 datestart = date.parse(timenow);
                 dateend = date.parse(timetotext);

                 DateTime datestartdaytime = new DateTime(datestart);
                 DateTime dateenddaytime = new DateTime(dateend);

                 JOptionPane.showMessageDialog(null, datestartdaytime + "\n" + dateenddaytime);

                int monthoutput = Months.monthsBetween(datestartdaytime, dateenddaytime).getMonths();
                int daysoutput = Days.daysBetween(datestartdaytime, datestartdaytime).getDays() % 30;
                int hoursoutput = Hours.hoursBetween(datestartdaytime, datestartdaytime).getHours() % 24;
                int minutsoutput = Minutes.minutesBetween(datestartdaytime, dateenddaytime).getMinutes() % 60;
                int secondsoutput = Seconds.secondsBetween(datestartdaytime, dateenddaytime).getSeconds() % 60;

                answer.setText(monthoutput + "Months" + daysoutput + "Days" + hoursoutput + "Hours" + minutsoutput + "Minutes" + secondsoutput + "Seconds");

非常感谢 :)


问题答案:

您的错误在以下两行中:

            int daysoutput = Days.daysBetween(datestartdaytime, datestartdaytime).getDays() % 30;
            int hoursoutput = Hours.hoursBetween(datestartdaytime, datestartdaytime).getHours() % 24;

您打算将其dateenddaytime用作第二个参数:

            int daysoutput = Days.daysBetween(datestartdaytime, dateenddaytime).getDays() % 30;
            int hoursoutput = Hours.hoursBetween(datestartdaytime, dateenddaytime).getHours() % 24;


 类似资料:
  • 问题内容: 如何找到两个Joda-Time DateTime实例之间的天数差异?“天数差异”是指如果开始时间是星期一,结束时间是星期二,则无论返回日期和开始时间/结束时间是小时/分钟/秒,我都希望返回值为1。 如果开始时间是晚上,结束时间是上午,则给我0。 我在其他日期字段上也遇到了同样的问题,因此我希望有一种通用的方法可以“忽略”重要性较低的字段。 换句话说,2月至3月4日之间的月份也将为1,而

  • 问题内容: 我第一次在Spring 3.0项目中使用Joda time api。现在,我有一个开始和结束日期,我想获取这两个日期之间所有星期一的日期。我怎样才能做到这一点 ? 问题答案:

  • 假设A有两个日期(开始时间) 例如。 感谢帮助。

  • 我使用下面的代码计算两个日期之间的年、月和天的数目,使用 以上代码的预期输出是(使用此站点并使用google play store中的一个应用程序进行勾选) null 如果需要更多的信息请告诉我。提前道谢。你的努力将会受到赞赏。

  • 问题内容: 我想比较两个日期,但是我遇到了麻烦。从一个对象创建一个日期,然后手动制作另一个日期。以下代码是一个示例: 但是测试结果。我猜是因为时间的缘故。如何检查这两个日期是否相等(我的意思是年,月,日相同)? 问题答案: 要么

  • 问题内容: 早上好, 我开发了一个android应用程序,我疯了!由于几天,我试图得到2个日期之间的差异天。 我在乔达时间就意识到了-这似乎行得通。 我将长sqlDate保存在数据库中。这是日期选择器的日期(以毫秒为单位)。 现在,我想通过查询请求此日期,并计算以毫秒为单位的日期与现在的日期之间的日期差。 我试试这个: 记录结果: 但这是错误的。例如: 这是SqlDate的结果-现在= 25919