计算一下当前时间到周三中午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]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab
- ¥15 求lingo代码和思路
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效