Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 查找特定日期某个时间的天数、小时数和分钟数_Java_Android_Date_Calendar - Fatal编程技术网

Java 查找特定日期某个时间的天数、小时数和分钟数

Java 查找特定日期某个时间的天数、小时数和分钟数,java,android,date,calendar,Java,Android,Date,Calendar,我对java开发相当陌生,遇到了一个需要帮助的问题 我需要找出每天(如果适用)、小时和分钟,直到上午8:30。然而,由于这是一个“学校倒计时”,代码必须知道,如果下一个上午8:30是在周六或周日,它应该显示到周一上午8:30的时间。同样,如果这没有多大意义,我很抱歉。因此,我处理这个问题的逻辑方法是: 计算明天是星期一、星期二、星期三、星期四还是星期五 如果是,计算出明天上午8:30之前的小时数和分钟数,并将其转换为2个字符串(小时和分钟) 否则,计算星期一上午8:30之前的天、小时和分钟,并将

我对java开发相当陌生,遇到了一个需要帮助的问题

我需要找出每天(如果适用)、小时和分钟,直到上午8:30。然而,由于这是一个“学校倒计时”,代码必须知道,如果下一个上午8:30是在周六或周日,它应该显示到周一上午8:30的时间。同样,如果这没有多大意义,我很抱歉。因此,我处理这个问题的逻辑方法是:

  • 计算明天是星期一、星期二、星期三、星期四还是星期五
  • 如果是,计算出明天上午8:30之前的小时数和分钟数,并将其转换为2个字符串(小时和分钟)
  • 否则,计算星期一上午8:30之前的天、小时和分钟,并将其转换为字符串(天、小时和分钟)

  • 正如你从这次尝试中看到的,我正在努力解决这个问题。任何帮助都将不胜感激,如果您需要更多信息,请立即询问

    这将对您有所帮助

            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DAY_OF_MONTH, 1);
            SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
            System.out.println("Tommorow is : " + sdf.format(cal.getTime()));
    
            Calendar future = Calendar.getInstance(); //future time
            future.add(Calendar.DAY_OF_MONTH, 1);
            future.set(Calendar.HOUR_OF_DAY,8); // Set hours to 8'O clock
            future.set(Calendar.MINUTE,30);
            Calendar now = Calendar.getInstance(); //get current time
            long hoursDiff = (future.getTimeInMillis() - now.getTimeInMillis())/(60 * 60 * 1000);
            long minDiff = (future.getTimeInMillis() - now.getTimeInMillis())/(60 * 1000);
            System.out.println("Hours left : " + hoursDiff);
            System.out.println("Minutes left : " + minDiff);
    

    你可能想看看Joda Time for Android。此外,DateFormat在多线程环境中本质上是不安全的,并且DateAPI通常是丑陋的和不可靠的(至少为了给您点1的答案),Calendar cal=Calendar.getInstance();cal.add(日历日/月,1);SimpleDataFormat sdf=新的SimpleDataFormat(“EEEE”);Date明天=cal.getTime();System.out.println(sdf.format(明天));这应该给你的明天好的谢谢!但我甚至不知道从哪里开始我剩下的问题!这就是为什么我张贴这个问题!你有什么想法吗?因为这让我很困惑。你可以使用其中的一部分,并根据你的逻辑,这只是给你一个参考,告诉你如何找到未来的日期,或者如何找到两个日期之间的差异。我需要做的就是:字符串timeleft=Long.toString(hoursLeft)+“Hours”+Long.toString(hoursLeft)+“Minutes”;我很确定一周中的某一天的逻辑是错误的,比如如果是在8:30之前,你会得到一个糟糕的结果,但是你可以解决这个问题。注意:这个答案忽略了时区这一关键问题。通过忽略时区,可以获得JVM的默认时区。时区可能随时间和计算机的不同而不同。@BasilBourque他的问题涉及Android,这意味着Calendar.getInstance()获取当前的本地时间。
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.DAY_OF_MONTH, 1);
            SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
            System.out.println("Tommorow is : " + sdf.format(cal.getTime()));
    
            Calendar future = Calendar.getInstance(); //future time
            future.add(Calendar.DAY_OF_MONTH, 1);
            future.set(Calendar.HOUR_OF_DAY,8); // Set hours to 8'O clock
            future.set(Calendar.MINUTE,30);
            Calendar now = Calendar.getInstance(); //get current time
            long hoursDiff = (future.getTimeInMillis() - now.getTimeInMillis())/(60 * 60 * 1000);
            long minDiff = (future.getTimeInMillis() - now.getTimeInMillis())/(60 * 1000);
            System.out.println("Hours left : " + hoursDiff);
            System.out.println("Minutes left : " + minDiff);
    
            Calendar now = Calendar.getInstance();
            int currentDay = now.get(Calendar.DAY_OF_WEEK);
    
            Calendar school = Calendar.getInstance();
            school.add(Calendar.DAY_OF_YEAR, 1);
    
            if (currentDay == Calendar.SATURDAY)
            {
                school.add(Calendar.DAY_OF_YEAR, 1);
            }
            else if (currentDay == Calendar.FRIDAY)
            {
                school.add(Calendar.DAY_OF_YEAR, 2);
            }
    
            school.set(Calendar.HOUR_OF_DAY, 8);
            school.set(Calendar.MINUTE, 30);
    
            long millisLeft = school.getTimeInMillis() - now.getTimeInMillis();
            long hoursLeft = millisLeft / (60 * 60 * 1000);
            long minutesLeft =  (millisLeft % (60 * 60 * 1000)) / (60 * 1000);