package homework;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Clock_Out {
public static int checkCount = 0;
public static final long TWO_HOURS = 1000*60*60*2;
public static void main(String[] args) throws ParseException {
// 上班时间
Calendar calendar_nine = Calendar.getInstance();
calendar_nine.set(Calendar.HOUR_OF_DAY, 9);
calendar_nine.set(Calendar.MINUTE, 0);
calendar_nine.set(Calendar.SECOND, 0);
Date timeNine = calendar_nine.getTime();
long time0 = timeNine.getTime();
System.out.println(time0);
System.out.println(timeNine);
// 下班时间
Calendar calendar_eighteen = Calendar.getInstance();
calendar_eighteen.set(Calendar.HOUR_OF_DAY, 18);
calendar_eighteen.set(Calendar.MINUTE, 0);
calendar_eighteen.set(Calendar.SECOND, 0);
Date timeEighteen = calendar_eighteen.getTime();
long time7 = timeEighteen.getTime();
System.out.println(time7);
System.out.println(timeEighteen);
Long lastTime = readLastCheckTime();
long time = checkTime();
if (checkCount != 6){
if (lastTime != null){
if ((time - lastTime) > TWO_HOURS){
System.out.println("打卡失败,已超时");
} else {
System.out.println("打卡成功");
}
String saveTime = String.valueOf(time);
saveDate(saveTime);
}else {
if ((time - time0) > TWO_HOURS){
System.out.println("打卡失败,已超时");
}else {
System.out.println("打卡成功");
}
String saveTime = String.valueOf(time);
saveDate(saveTime);
}
}else {
if ((time - lastTime) < TWO_HOURS && (time7 - time) < TWO_HOURS){
System.out.println("打卡成功");
}else{
System.out.println("打卡失败,已超时");
}
String saveTime = String.valueOf(time);
saveDate(saveTime);
}
System.out.println(checkCount);
}
private static Long readLastCheckTime() {
BufferedReader br = null;
Long lastTime = null;
try {
br = new BufferedReader(new FileReader(new File("./data/checkTime.txt")));
String data = null;
while ((data = br.readLine()) != null){
if (data.startsWith("c")){
checkCount = Integer.parseInt(data.substring(2));
}else {
lastTime = Long.parseLong(data);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return lastTime;
}
/**
* 存储打卡时间戳方法
*/
private static void saveDate(String str) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(new File("./data/checkTime.txt"),true));
bw.write(str);
bw.newLine();
bw.write("c:" + checkCount);
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bw != null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 打卡功能模块,每次用户打卡时,调用该模块
* @return long类型时间戳
*/
public static long checkTime(){
checkCount++;
Date checkTime = new Date();
return checkTime.getTime();
}
}
|