suntsh 2014-09-07 10:18 采纳率: 0%
浏览 201
已采纳

请教一个算法问题

计算一下当前时间到周三中午12点还有多少时长?
哪位帮忙给写个伪代码,

  • 写回答

1条回答 默认 最新

  • tianchao_ 2014-09-09 10:01
    关注

    [code="java"]
    package com.kuke.update.timmer;

    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimerTask;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;

    /**

    • 定时任务
    • 用于定时提交索引、定时刷新搜索词缓存
      */
      public class ScheduledExceutor extends TimerTask {

      private String jobName = "";

      private static ScheduledExecutorService service = Executors.newScheduledThreadPool(2);

      public ScheduledExceutor(String jobName) {
      super();
      this.jobName = jobName;
      }

      @Override
      public void run() {

      }

      /**

      • 计算从当前时间currentDate开始,满足条件dayOfWeek, hourOfDay, minuteOfHour,
      • secondOfMinite的最近时间
        */
        public Calendar getEarliestDate(Calendar currentDate, int dayOfWeek, int hourOfDay, int minuteOfHour, int secondOfMinite) {
        // 计算当前时间的WEEK_OF_YEAR,DAY_OF_WEEK, HOUR_OF_DAY, MINUTE,SECOND等各个字段值
        int currentWeekOfYear = currentDate.get(Calendar.WEEK_OF_YEAR);
        int currentDayOfWeek = currentDate.get(Calendar.DAY_OF_WEEK);
        int currentHour = currentDate.get(Calendar.HOUR_OF_DAY);
        int currentMinute = currentDate.get(Calendar.MINUTE);
        int currentSecond = currentDate.get(Calendar.SECOND);

        // 如果输入条件中的dayOfWeek小于当前日期的dayOfWeek,则WEEK_OF_YEAR需要推迟一周
        boolean weekLater = false;
        if (dayOfWeek < currentDayOfWeek) {
        weekLater = true;
        } else if (dayOfWeek == currentDayOfWeek) {
        // 当输入条件与当前日期的dayOfWeek相等时,如果输入条件中的
        // hourOfDay小于当前日期的
        // currentHour,则WEEK_OF_YEAR需要推迟一周
        if (hourOfDay < currentHour) {
        weekLater = true;
        } else if (hourOfDay == currentHour) {
        // 当输入条件与当前日期的dayOfWeek, hourOfDay相等时,
        // 如果输入条件中的minuteOfHour小于当前日期的
        // currentMinute,则WEEK_OF_YEAR需要推迟一周
        if (minuteOfHour < currentMinute) {
        weekLater = true;
        } else if (minuteOfHour == currentSecond) {
        // 当输入条件与当前日期的dayOfWeek, hourOfDay,
        // minuteOfHour相等时,如果输入条件中的
        // secondOfMinite小于当前日期的currentSecond,
        // 则WEEK_OF_YEAR需要推迟一周
        if (secondOfMinite < currentSecond) {
        weekLater = true;
        }
        }
        }
        }
        if (weekLater) {
        // 设置当前日期中的WEEK_OF_YEAR为当前周推迟一周
        currentDate.set(Calendar.WEEK_OF_YEAR, currentWeekOfYear + 1);
        }
        // 设置当前日期中的DAY_OF_WEEK,HOUR_OF_DAY,MINUTE,SECOND为输入条件中的值。
        currentDate.set(Calendar.DAY_OF_WEEK, dayOfWeek);
        currentDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
        currentDate.set(Calendar.MINUTE, minuteOfHour);
        currentDate.set(Calendar.SECOND, secondOfMinite);
        return currentDate;

      }

      public static void main(String[] args) {
      //每周3 、12点、0分、0秒执行 (sunday:1 作为一周第一天)
      int dayOfWeek_upindex = 4;
      int hourOfDay_upindex = 12;
      int minuteOfHour_upindex = 0;
      int secondOfMinite_upindex = 0;
      ScheduledExceutor job = new ScheduledExceutor("");
      Calendar currentDate = Calendar.getInstance();
      long currentDateLong = currentDate.getTime().getTime();
      Calendar earliestDate = job.getEarliestDate(currentDate, dayOfWeek_upindex, hourOfDay_upindex, minuteOfHour_upindex,
      secondOfMinite_upindex);
      long earliestDateLong = earliestDate.getTime().getTime();
      // 计算从当前时间到最近一次执行时间的时间间隔
      long delay = earliestDateLong - currentDateLong;
      System.out.println(delay);

    // long period = 7 * 24 * 60 * 60 * 1000;
    // service.scheduleAtFixedRate(job, delay, period, TimeUnit.MILLISECONDS);

    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 软件自定义无线电该怎样使用
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下