Mercurial > dive4elements > framework
annotate artifacts-common/src/main/java/org/dive4elements/artifacts/common/utils/DateUtils.java @ 561:1c2ce0501305
Added some methods for Abflussjahr
author | mschaefer |
---|---|
date | Mon, 24 Sep 2018 17:59:17 +0200 |
parents | 415df0fc4fa1 |
children |
rev | line source |
---|---|
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
472
diff
changeset
|
1 package org.dive4elements.artifacts.common.utils; |
389
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
2 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
3 import java.util.Calendar; |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
4 import java.util.Date; |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
5 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
6 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
7 public class DateUtils { |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
8 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
9 private DateUtils() { |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 } |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 /** |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 * This function extracts the year as int value from <i>date</i>. |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 * |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 * @param date The source date. |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 * |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 * @return the year as integer or -1 if date is empty. |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 */ |
561 | 20 public static int getYearFromDate(final Date date) { |
389
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 if (date == null) { |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 return -1; |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 } |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 |
561 | 25 final Calendar cal = Calendar.getInstance(); |
389
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 cal.setTime(date); |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 return cal.get(Calendar.YEAR); |
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 } |
561 | 30 |
31 /** | |
32 * Gets the abfluss year (1.11. - 31.10.) a date belongs to | |
33 * | |
34 * @return the abfluss year, or -1 | |
35 */ | |
36 public static int getAbflussYearFromDate(final Date date) { | |
37 if (date == null) | |
38 return -1; | |
39 final Calendar cal = Calendar.getInstance(); | |
40 cal.setTime(getAbflussYear(date)[1]); | |
41 return cal.get(Calendar.YEAR); | |
42 } | |
43 | |
44 /** | |
45 * Gets the date range of the abfluss year (1.11. - 31.10.) a date belongs to | |
46 * | |
47 * @return [abfluss year start date, abfluss year end date], or null | |
48 */ | |
49 public static Date[] getAbflussYear(final Date date) { | |
50 if (date == null) | |
51 return null; | |
52 final Calendar cal = Calendar.getInstance(); | |
53 cal.setTime(date); | |
54 final int qYear = (cal.get(Calendar.MONTH) >= 10) ? cal.get(Calendar.YEAR) + 1 : cal.get(Calendar.YEAR); | |
55 return getAbflussYear(qYear); | |
56 } | |
57 | |
58 /** | |
59 * Gets the date range of the abfluss year (1.11. - 31.10.) a date belongs to | |
60 * | |
61 * @return [abfluss year start date, abfluss year end date], or null | |
62 */ | |
63 public static Date[] getAbflussYear(final int year) { | |
64 final Calendar calStart = Calendar.getInstance(); | |
65 calStart.clear(); | |
66 calStart.set(year - 1, 10, 1, 0, 0, 0); | |
67 final Calendar calEnd = Calendar.getInstance(); | |
68 calEnd.clear(); | |
69 calEnd.set(year, 9, 31, 23, 59, 59); | |
70 return new Date[] { calStart.getTime(), calEnd.getTime() }; | |
71 } | |
72 | |
73 /** | |
74 * Gets the date range of the abfluss year following a date, or that of the date itself if it's a nov-1 | |
75 * | |
76 * @return [abfluss year start date, abfluss year end date], or null | |
77 */ | |
78 public static Date[] getNextAbflussYear(final Date date) { | |
79 if (date == null) | |
80 return null; | |
81 final Calendar cal = Calendar.getInstance(); | |
82 cal.setTime(date); | |
83 final int nextQYear = cal.get(Calendar.YEAR) + 1; | |
84 switch (cal.get(Calendar.MONTH)) { | |
85 case 10: | |
86 if (cal.get(Calendar.DAY_OF_MONTH) >= 2) | |
87 return getAbflussYear(nextQYear + 1); | |
88 break; | |
89 case 11: | |
90 return getAbflussYear(nextQYear + 1); | |
91 default: | |
92 break; | |
93 } | |
94 return getAbflussYear(nextQYear); | |
95 } | |
96 | |
97 /** | |
98 * Gets the date range of the abfluss year preceeding a date, or that of the date itself if it's a oct-31 | |
99 * | |
100 * @return [abfluss year start date, abfluss year end date], or null | |
101 */ | |
102 public static Date[] getPreviousAbflussYear(final Date date) { | |
103 if (date == null) | |
104 return null; | |
105 final Calendar cal = Calendar.getInstance(); | |
106 cal.setTime(date); | |
107 final int previousQYear = cal.get(Calendar.YEAR); | |
108 switch (cal.get(Calendar.MONTH)) { | |
109 case 10: | |
110 case 11: | |
111 break; | |
112 case 9: | |
113 if (cal.get(Calendar.DAY_OF_MONTH) <= 30) | |
114 return getAbflussYear(previousQYear - 1); | |
115 break; | |
116 default: | |
117 return getAbflussYear(previousQYear - 1); | |
118 } | |
119 return getAbflussYear(previousQYear); | |
120 } | |
121 | |
122 /** | |
123 * Gets the date of the new year's day following a date, or the date itself with 0-time if it's a jan-1 | |
124 * | |
125 * @return a newyear's date, or null | |
126 */ | |
127 public static Date getNextNewYear(final Date date) { | |
128 if (date == null) | |
129 return null; | |
130 final Calendar cal = Calendar.getInstance(); | |
131 cal.setTime(date); | |
132 final int offset = (cal.get(Calendar.DAY_OF_YEAR) == 1) ? 0 : 1; | |
133 cal.set(cal.get(Calendar.YEAR) + offset, 0, 1, 0, 0, 0); | |
134 return cal.getTime(); | |
135 } | |
389
ea263ee87563
Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 } |