回答編集履歴

1

コード追加

2016/02/25 07:28

投稿

tkturbo
tkturbo

スコア5572

test CHANGED
@@ -1,6 +1,8 @@
1
1
  日付差分だけならdifferenceDaysの中身がこんな感じでいかが?
2
2
 
3
3
 
4
+
5
+ ```java
4
6
 
5
7
  Calendar cal1 = Calendar.getInstance();
6
8
 
@@ -27,3 +29,103 @@
27
29
  cal1.add(Calendar.DATE, -1 * cal2.get(Calendar.DATE);
28
30
 
29
31
  return (int)cal1.get(Calendar.DATE);
32
+
33
+ ```
34
+
35
+
36
+
37
+ 【追記】
38
+
39
+ 年月日時分秒で差を求めるのだと下記のような感じになるかな?
40
+
41
+
42
+
43
+ ```java
44
+
45
+ Calendar c1 = Calendar.getInstance();
46
+
47
+ c1.setTime(date1);
48
+
49
+
50
+
51
+ Calendar c2 = Calendar.getInstance();
52
+
53
+ c2.setTime(date2);
54
+
55
+
56
+
57
+ // millisecond
58
+
59
+ c1.set(Calendar.MILLISECOND, 0);
60
+
61
+ c2.set(Calendar.MILLISECOND, 0);
62
+
63
+
64
+
65
+ // second
66
+
67
+ int sec = c1.get(Calendar.SECOND) - c2.get(Calendar.SECOND);
68
+
69
+ sec += (sec < 0) ? 60 : 0;
70
+
71
+ c1.add(Calendar.SECOND, -1 * sec);
72
+
73
+
74
+
75
+ // minute
76
+
77
+ int min = c1.get(Calendar.MINUTE) - c2.get(Calendar.MINUTE);
78
+
79
+ min += (min < 0) ? 60 : 0;
80
+
81
+ c1.add(Calendar.MINUTE, -1 * min);
82
+
83
+
84
+
85
+ // hour
86
+
87
+ int hour = c1.get(Calendar.HOUR) - c2.get(Calendar.HOUR);
88
+
89
+ hour += (hour < 0) ? 24 : 0;
90
+
91
+ c1.add(Calendar.HOUR, -1 * hour);
92
+
93
+
94
+
95
+ // day
96
+
97
+ long longtime1 = c1.getTimeInMillis();
98
+
99
+ c1.set(Calendar.DATE, 1);
100
+
101
+ c1.add(Calendar.DATE, -1);
102
+
103
+ int dayInLastMonth = c1.get(Calendar.DATE);
104
+
105
+ c1.setTimeInMillis(longtime1);
106
+
107
+ int day = c1.get(Calendar.DATE) - c2.get(Calendar.DATE);
108
+
109
+ day += (day < 0) ? dayInLastMonth : 0;
110
+
111
+ c1.add(Calendar.DATE, -1 * day);
112
+
113
+
114
+
115
+ // month
116
+
117
+ int month = c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH);
118
+
119
+ month += (month < 0) ? 12 : 0;
120
+
121
+ c1.add(Calendar.MONTH, -1 * month);
122
+
123
+
124
+
125
+ // year
126
+
127
+ int year = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
128
+
129
+ ```
130
+
131
+