四班三倒计算_java
- 格式:doc
- 大小:46.00 KB
- 文档页数:2
通过java计算四班三倒上班情况
四个值上四种班,每种班轮流上两天,八天一轮回
某一值八天上班情况:白班 白班 后夜 后夜 前夜 前夜 休息 休息
java代码:
package com.baodian;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class daoban {
//每个班上班顺序
static String[] daoban = new String[] {"白班", "后夜", "前夜", "休息"};
static String[] zhishu = new String[] {"一值", "二值", "三值", "四值"};
static int[] shunxu = new int[] {3, 1, 4, 2};
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 EEE
HH:mm:ss");
//四个值上四种班,每种班轮流上两天,八天一轮回
//某一值八天上班情况:白班 白班 后夜 后夜 前夜 前夜 休息 休息
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
//因为有时区的作用,要将时间加上8小时才是所需要的时间,
//所以要将时间设置为当天08:00-23:59至次日07:59,才能准确计算时间差
//否则,如果时间设置在00:00-07:59之间,此时间是昨天的时间,计算会失误
today.set(2012, 11, 27, 7, 0, 0);jisuan(today);//此条是错误的
today.set(2012, 11, 27, 8, 0, 0);jisuan(today);
today.set(2012, 11, 28, 8, 0, 0);jisuan(today);
today.set(2012, 11, 29, 8, 0, 0);jisuan(today);
today.set(2012, 11, 30, 8, 0, 0);jisuan(today);
}
public static void jisuan(Calendar today) {
System.out.println(sdf.format(today.getTime()));
int[] zhiban = jisuandaoban(today);
for(int i=0; i System.out.println(zhishu[i] + " " + daoban[zhiban[i]]); } } public static int[] jisuandaoban(Calendar day) { //四个班白班交班顺序:三值 -> 一值 -> 四值 -> 二值 //即2013年1月1日三值上完白班,接着明天一值上白班 int[] zhiban = new int[4]; //返回的是UTC时间差,如果输入的时候不把时间加上当前时区数,有可能会计算的是昨天 long shicha = day.getTimeInMillis(); System.out.println("相差天数:" + shicha/ (1000*60*60*24)); int zhouqi = (int)(shicha / (1000*60*60*24)) % 8; switch(zhouqi) { case 1:; case 2: zhouqi = 0; break; case 3:; case 4: zhouqi = 1; break; case 5:; case 6: zhouqi = 2; break; default: zhouqi = 3; } for(int i=0;i zhiban[i] = (zhouqi + shunxu[i]) %4; } return zhiban; } } 运行截图: