【问题标题】:Find days, hours and minutes to a time on certain days查找某天某个时间的天数、小时数和分钟数
【发布时间】:2014-05-02 21:34:49
【问题描述】:

我是 Java 开发的新手,遇到了一个需要帮助的问题。

我需要找出上午 8.30 之前的天数(如果适用)、小时和分钟。但是,由于这是“上学倒计时”,代码必须知道如果下一个上午 8.30 是在星期六或星期日,它应该显示到星期一上午 8.30 的时间。再次,抱歉,如果这没有多大意义。因此,我将着手解决此问题的合乎逻辑的方法是:

  1. 确定明天是星期一、星期二、星期三、星期四还是星期五。
  2. 如果是,请计算出明天上午 8.30 之前的小时数和分钟数,并将其转换为 2 个字符串(小时和分钟)
  3. 否则,计算周一早上 8.30 之前的天数、小时数和分钟数,并将它们转换为字符串(天数、小时数和分钟数)

    Date dt = new Date();
    Calendar c = Calendar.getInstance();
    c.setTime(dt);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    dt = c.getTime();
    DateFormat dateFormat = new SimpleDateFormat("dd");
    String datetommorow = dateFormat.format(dt);
    int date22 = Integer.parseInt(datetommorow);
    int date33 = date22 + 1;
    Integer.toString(date33);
    

正如您从这次尝试中看到的那样,我正在为此苦苦挣扎。任何帮助将不胜感激,如果您需要更多信息请随时询问

【问题讨论】:

  • 只是为了给你答案 1) Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, 1); SimpleDateFormat sdf = new SimpleDateFormat("EEEE");明天的日期 = cal.getTime(); System.out.println(sdf.format(明天));这应该给你明天的一天
  • 好的,谢谢!但我什至不知道从哪里开始我的其余问题!这就是我发布这个问题的原因!你有什么想法吗,因为这让我很难过

标签: java android date calendar


【解决方案1】:
        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);

【讨论】:

  • 谢谢。我需要做的就是:String timeleft = Long.toString(hoursLeft) + "Hours" + Long.toString(hoursLeft) + "Minutes";
  • 我很确定星期几的逻辑是错误的,比如如果在 8:30 之前你会得到一个糟糕的结果,但你可以解决这个问题。
  • 注意:这个答案忽略了时区的关键问题。通过忽略时区,您将获得 JVM 的默认时区。该时区可能会因时而异,也因计算机而异。
  • @BasilBourque 他的问题是关于Android的,也就是说Calendar.getInstance()获取的是当前本地时间。
【解决方案2】:

这应该对你有帮助

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

【讨论】:

  • 你可以使用它的一部分并建立在你的逻辑上,这只是为了给你一个参考,以了解如何找到未来的日期或如何找到两个日期之间的差异
【解决方案3】:

您可能想查看 Android 版 Joda-Time。此外,DateFormat 在多线程环境中本质上是不安全的,而且 Date API 通常丑陋且损坏(至少对于

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2019-05-28
    相关资源
    最近更新 更多