TimePeroid.java
2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package com.hotent.Calendar.model;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import com.hotent.base.util.BeanUtils;
import com.hotent.base.util.time.TimeUtil;
/**
* 时间段
* @author lenovo
*
*/
public class TimePeroid implements Comparable<TimePeroid>{
//如何表示startDate 均不能为空
protected LocalDateTime startDate; //开始时间
protected LocalDateTime endDate; //结束时间
protected long time; //时长( 毫秒)
protected String PeroidType;//时间段类型,上班、请假、加班
/**
* 上班
*/
public static final String PEROID_TYPE_SHIFT="shift";
/**
* 请假
*/
public static final String PEROID_TYPE_ABSENCE="absence";
/**
* 加班
*/
public static final String PEROID_TYPE_OVER="over";
/**
* 构造函数
*/
public TimePeroid(){
}
/**
* 构造函数
* overTime类型转TimePart
* @param overTime
*/
public TimePeroid(LocalDateTime strat_date,LocalDateTime end_date,String peroid_type) {
this.startDate=strat_date;
this.endDate=end_date;
this.time=getTime(end_date)-getTime(strat_date);
this.PeroidType=peroid_type;
}
public LocalDateTime getStartDate() {
return startDate;
}
/**
* 每次设置开始时间,都要计算时长
* @author hjx
* @version 创建时间:2014-2-24 下午2:26:57
* @param beginDate
*/
public void setStartDate(LocalDateTime beginDate) {
this.startDate = beginDate;
this.time=getTime(this.endDate)-getTime(beginDate);
}
public LocalDateTime getEndDate() {
return endDate;
}
/**
* 次设置结束时间,都要计算时长
* @author hjx
* @version 创建时间:2014-2-24 下午2:27:03
* @param endDate
*/
public void setEndDate(LocalDateTime endDate) {
this.endDate = endDate;
this.time=getTime(endDate)-getTime(this.getStartDate());
}
/**
* 计算时长 毫秒
* @author hjx
* @version 创建时间:2014-2-20 下午4:47:12
* @return
*/
public long getTime() {
return getTime(endDate)-getTime(startDate);
}
public void setTime(Long time) {
this.time = time;
}
/**
* 比较大小
* 这样就能使用Collections.sort(lists)排序
*/
@Override
public int compareTo(TimePeroid timePeroid) {
if (null == timePeroid) return 1;
else {
return this.startDate.compareTo(timePeroid.startDate);
}
}
@Override
public String toString(){
return TimeUtil.getDateTimeString(this.getStartDate())
+"~"
+TimeUtil.getDateTimeString(this.getEndDate())
+"["+this.PeroidType+"]"
+"["+(long)(time/60000)+"]"
;
}
private long getTime(LocalDateTime date){
if(BeanUtils.isEmpty(date)){
return 0;
}
ZoneId zone = ZoneId.systemDefault();
Instant instant = date.atZone(zone).toInstant();
return instant.toEpochMilli();
}
}