计算一下当前时间到周三中午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 Matlab打开默认名称带有/的光谱数据
- ¥50 easyExcel模板 动态单元格合并列
- ¥15 res.rows如何取值使用
- ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
- ¥15 CSP算法实现EEG特征提取,哪一步错了?
- ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
- ¥15 vue3前端取消收藏的不会引用collectId
- ¥15 delphi7 HMAC_SHA256方式加密
- ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
- ¥15 下列c语言代码为何输出了多余的空格