有时候会要求实现这样一个需求:
天、小时、分钟、秒的数值都是隔开的,服务器端只返回一个时间戳长度。
以下就是我的实现方案,力求减少对象生成、减小计算量:
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
|
import java.util.Timer;
import java.util.TimerTask;
public class CountDownUtils {
private static long day = 0 ;
private static long hour = 0 ;
private static long minute = 0 ;
private static long second = 0 ;
private static boolean dayNotAlready = false ;
private static boolean hourNotAlready = false ;
private static boolean minuteNotAlready = false ;
private static boolean secondNotAlready = false ;
public static void main(String[] args) {
long totalSeconds = 60 * 60 * 24 * 34 + 21 ;
initData(totalSeconds);
new Timer().schedule( new TimerTask() {
public void run() {
if (secondNotAlready) {
startCount();
} else {
cancel();
}
}
}, 0 , 1000 );
}
/**
* 初始化赋值
*
* @param totalSeconds
*/
private static void initData( long totalSeconds) {
resetData();
if (totalSeconds > 0 ) {
secondNotAlready = true ;
second = totalSeconds;
if (second >= 60 ) {
minuteNotAlready = true ;
minute = second / 60 ;
second = second % 60 ;
if (minute >= 60 ) {
hourNotAlready = true ;
hour = minute / 60 ;
minute = minute % 60 ;
if (hour > 24 ) {
dayNotAlready = true ;
day = hour / 24 ;
hour = hour % 24 ;
}
}
}
}
System.out.println( "初始格式化后——>" + day + "天" + hour + "小时" + minute
+ "分钟" + second + "秒" );
}
private static void resetData() {
day = 0 ;
hour = 0 ;
minute = 0 ;
second = 0 ;
dayNotAlready = false ;
hourNotAlready = false ;
minuteNotAlready = false ;
secondNotAlready = false ;
}
/**
* 计算各个值的变动
*
*/
public static void startCount() {
if (secondNotAlready) {
if (second > 0 ) {
second--;
if (second == 0 && !minuteNotAlready) {
secondNotAlready = false ;
}
} else {
if (minuteNotAlready) {
if (minute > 0 ) {
minute--;
second = 59 ;
if (minute == 0 && !hourNotAlready) {
minuteNotAlready = false ;
}
} else {
if (hourNotAlready) {
if (hour > 0 ) {
hour--;
minute = 59 ;
second = 59 ;
if (hour == 0 && !dayNotAlready) {
hourNotAlready = false ;
}
} else {
if (dayNotAlready) {
day--;
hour = 23 ;
minute = 59 ;
second = 59 ;
if (day == 0 ) {
dayNotAlready = false ;
}
}
}
}
}
}
}
}
System.out.println( "距离截止日期还有——>" + day + "天" + hour + "小时" + minute
+ "分钟" + second + "秒" );
}
}
|
总结
以上所述是小编给大家介绍的Java 实现倒计时功能(由秒计算天、小时、分钟、秒),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://blog.csdn.net/ganshenml/article/details/79109782