四班三倒计算_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;

}

}

运行截图: