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
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
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
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
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
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
30
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
31 /**
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
32 * Gets the abfluss year (1.11. - 31.10.) a date belongs to
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
33 *
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
34 * @return the abfluss year, or -1
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
35 */
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
36 public static int getAbflussYearFromDate(final Date date) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
37 if (date == null)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
38 return -1;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
39 final Calendar cal = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
40 cal.setTime(getAbflussYear(date)[1]);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
41 return cal.get(Calendar.YEAR);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
42 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
43
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
44 /**
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
45 * Gets the date range of the abfluss year (1.11. - 31.10.) a date belongs to
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
46 *
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
47 * @return [abfluss year start date, abfluss year end date], or null
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
48 */
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
49 public static Date[] getAbflussYear(final Date date) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
50 if (date == null)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
51 return null;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
52 final Calendar cal = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
53 cal.setTime(date);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
54 final int qYear = (cal.get(Calendar.MONTH) >= 10) ? cal.get(Calendar.YEAR) + 1 : cal.get(Calendar.YEAR);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
55 return getAbflussYear(qYear);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
56 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
57
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
58 /**
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
59 * Gets the date range of the abfluss year (1.11. - 31.10.) a date belongs to
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
60 *
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
61 * @return [abfluss year start date, abfluss year end date], or null
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
62 */
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
63 public static Date[] getAbflussYear(final int year) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
64 final Calendar calStart = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
65 calStart.clear();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
66 calStart.set(year - 1, 10, 1, 0, 0, 0);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
67 final Calendar calEnd = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
68 calEnd.clear();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
69 calEnd.set(year, 9, 31, 23, 59, 59);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
70 return new Date[] { calStart.getTime(), calEnd.getTime() };
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
71 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
72
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
73 /**
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
74 * Gets the date range of the abfluss year following a date, or that of the date itself if it's a nov-1
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
75 *
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
76 * @return [abfluss year start date, abfluss year end date], or null
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
77 */
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
78 public static Date[] getNextAbflussYear(final Date date) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
79 if (date == null)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
80 return null;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
81 final Calendar cal = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
82 cal.setTime(date);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
83 final int nextQYear = cal.get(Calendar.YEAR) + 1;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
84 switch (cal.get(Calendar.MONTH)) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
85 case 10:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
86 if (cal.get(Calendar.DAY_OF_MONTH) >= 2)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
87 return getAbflussYear(nextQYear + 1);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
88 break;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
89 case 11:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
90 return getAbflussYear(nextQYear + 1);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
91 default:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
92 break;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
93 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
94 return getAbflussYear(nextQYear);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
95 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
96
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
97 /**
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
98 * Gets the date range of the abfluss year preceeding a date, or that of the date itself if it's a oct-31
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
99 *
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
100 * @return [abfluss year start date, abfluss year end date], or null
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
101 */
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
102 public static Date[] getPreviousAbflussYear(final Date date) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
103 if (date == null)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
104 return null;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
105 final Calendar cal = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
106 cal.setTime(date);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
107 final int previousQYear = cal.get(Calendar.YEAR);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
108 switch (cal.get(Calendar.MONTH)) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
109 case 10:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
110 case 11:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
111 break;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
112 case 9:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
113 if (cal.get(Calendar.DAY_OF_MONTH) <= 30)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
114 return getAbflussYear(previousQYear - 1);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
115 break;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
116 default:
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
117 return getAbflussYear(previousQYear - 1);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
118 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
119 return getAbflussYear(previousQYear);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
120 }
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
121
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
122 /**
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
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
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
124 *
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
125 * @return a newyear's date, or null
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
126 */
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
127 public static Date getNextNewYear(final Date date) {
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
128 if (date == null)
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
129 return null;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
130 final Calendar cal = Calendar.getInstance();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
131 cal.setTime(date);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
132 final int offset = (cal.get(Calendar.DAY_OF_YEAR) == 1) ? 0 : 1;
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
133 cal.set(cal.get(Calendar.YEAR) + offset, 0, 1, 0, 0, 0);
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
134 return cal.getTime();
1c2ce0501305 Added some methods for Abflussjahr
mschaefer
parents: 475
diff changeset
135 }
389
ea263ee87563 Added new helper class DateUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 }

http://dive4elements.wald.intevation.org