Ich habe das Datum mehrerer Ereignisse in Millisekunden [1] angegeben und möchte wissen, welche Ereignisse sich in der aktuellen Woche und im aktuellen Monat befinden, kann jedoch nicht herausfinden, wie der erste Tag (Tag / Monat / Jahr) ermittelt werden kann ) der laufenden Woche und konvertieren Sie es in Millisekunden, das gleiche für den ersten Tag des Monats.
[1]Since January 1, 1970, 00:00:00 GMT
1
...Antworten:
Diese Woche in Millisekunden:
// get today and clear time of day Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day ! cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); // get start of this week in milliseconds cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); System.out.println("Start of this week: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis()); // start of the next week cal.add(Calendar.WEEK_OF_YEAR, 1); System.out.println("Start of the next week: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis());
Diesen Monat in Millisekunden:
// get today and clear time of day Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day ! cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); // get start of the month cal.set(Calendar.DAY_OF_MONTH, 1); System.out.println("Start of the month: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis()); // get start of the next month cal.add(Calendar.MONTH, 1); System.out.println("Start of the next month: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis());
quelle
cal.clear(Calendar.HOUR_OF_DAY);
mitcal.set(Calendar.HOUR_OF_DAY, 0);
wie in der javadoc von Kalender angewiesen.Der erste Wochentag kann mit Hilfe von
java.util.Calendar
wie folgt bestimmt werden:Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.setTimeInMillis(timestamp); while (calendar.get(Calendar.DAY_OF_WEEK) > calendar.getFirstDayOfWeek()) { calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of week. } long firstDayOfWeekTimestamp = calendar.getTimeInMillis();
Der erste Tag des Monats kann wie folgt bestimmt werden:
Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.setTimeInMillis(timestamp); while (calendar.get(Calendar.DATE) > 1) { calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of month. } long firstDayOfMonthTimestamp = calendar.getTimeInMillis();
Ziemlich ausführlich, ja.
Java 7 wird mit einer stark verbesserten Datums- und Uhrzeit-API ( JSR-310 ) geliefert . Wenn Sie noch nicht wechseln können, können Sie JodaTime so weit wie möglich verwenden , was alles weniger kompliziert macht:
DateTime dateTime = new DateTime(timestamp); long firstDayOfWeekTimestamp = dateTime.withDayOfWeek(1).getMillis();
und
DateTime dateTime = new DateTime(timestamp); long firstDayOfMonthTimestamp = dateTime.withDayOfMonth(1).getMillis();
quelle
java.time
Das Java.time- Framework in Java 8 und höher ersetzt die alten Klassen java.util.Date/.Calendar. Die alten Klassen haben sich als lästig, verwirrend und fehlerhaft erwiesen. Vermeide sie.
Der java.time Rahmen wird durch die sehr erfolgreiche inspiriert Joda-Time Bibliothek, definiert durch JSR 310 , durch das erweiterten ThreeTen-Extra - Projekt, und erklärte im Tutorial .
Instant
Die
Instant
Klasse repräsentiert einen Moment auf der Zeitachse in UTC .Das java.time-Framework hat eine Auflösung von Nanosekunden oder 9 Stellen einer Bruchsekunde. Millisekunden sind nur 3 Stellen einer Bruchsekunde. Da die Auflösung in Millisekunden üblich ist, enthält java.time eine praktische Factory-Methode.
long millisecondsSinceEpoch = 1446959825213L; Instant instant = Instant.ofEpochMilli ( millisecondsSinceEpoch );
ZonedDateTime
Um die aktuelle Woche und den aktuellen Monat zu berücksichtigen, müssen wir eine bestimmte Zeitzone anwenden.
ZoneId zoneId = ZoneId.of ( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );
Halb offen
In der Datums- und Zeitarbeit verwenden wir üblicherweise den Half-Open-Ansatz, um eine Zeitspanne zu definieren. Der Anfang ist inklusive, während das Ende exklusiv ist . Anstatt zu versuchen, den letzten Sekundenbruchteil des Wochenendes (oder Monats) zu bestimmen, erhalten wir den ersten Moment der folgenden Woche (oder des folgenden Monats). So eine Woche läuft vom ersten Moment an von Montag und geht nach oben , aber nicht einschließlich dem ersten Moment des folgenden Montags.
Lassen Sie uns den ersten und letzten Tag der Woche. Das java.time-Framework enthält ein Tool dafür, die
with
Methode und dieChronoField
Aufzählung.Standardmäßig verwendet java.time den ISO 8601- Standard. Montag ist also der erste Tag der Woche (1) und Sonntag der letzte (7).
ZonedDateTime firstOfWeek = zdt.with ( ChronoField.DAY_OF_WEEK , 1 ); // ISO 8601, Monday is first day of week. ZonedDateTime firstOfNextWeek = firstOfWeek.plusWeeks ( 1 );
Hoppla! Sehen Sie sich die Tageszeit für diese Werte an. Wir wollen den ersten Moment des Tages. Der erste Moment des Tages ist nicht immer
00:00:00.000
auf die Sommerzeit (DST) oder andere Anomalien zurückzuführen. Deshalb sollten wir java.time die Anpassung in unserem Namen vornehmen lassen. Dazu müssen wir dieLocalDate
Klasse durchlaufen .ZonedDateTime firstOfWeek = zdt.with ( ChronoField.DAY_OF_WEEK , 1 ); // ISO 8601, Monday is first day of week. firstOfWeek = firstOfWeek.toLocalDate ().atStartOfDay ( zoneId ); ZonedDateTime firstOfNextWeek = firstOfWeek.plusWeeks ( 1 );
Und das Gleiche für den Monat.
ZonedDateTime firstOfMonth = zdt.with ( ChronoField.DAY_OF_MONTH , 1 ); firstOfMonth = firstOfMonth.toLocalDate ().atStartOfDay ( zoneId ); ZonedDateTime firstOfNextMonth = firstOfMonth.plusMonths ( 1 );
YearMonth
Eine andere Möglichkeit, um festzustellen, ob sich zwei Momente im selben Monat befinden, besteht darin, nach demselben
YearMonth
Wert zu suchen.Nehmen wir zum Beispiel an
thisZdt
undthatZdt
sind beideZonedDateTime
Objekte:boolean inSameMonth = YearMonth.from( thisZdt ).equals( YearMonth.from( thatZdt ) ) ;
Millisekunden
Ich empfehle dringend, Ihre Datums- und Zeitarbeit nicht in Millisekunden ab Epoche auszuführen. Das ist in der Tat die Art und Weise, wie Datums- und Zeitklassen intern arbeiten, aber wir haben die Klassen aus einem bestimmten Grund. Der Umgang mit einer Zählung aus der Epoche ist umständlich, da die Werte für den Menschen nicht verständlich sind und das Debuggen und Protokollieren schwierig und fehleranfällig ist. Und wie wir bereits gesehen haben, können unterschiedliche Auflösungen im Spiel sein. Alte Java-Klassen und die Joda-Time-Bibliothek verwenden Millisekunden, während Datenbanken wie Postgres Mikrosekunden verwenden und java.time jetzt Nanosekunden verwendet.
Würden Sie Text als Bits verarbeiten, oder lassen Sie sich Klassen wie
String
,StringBuffer
undStringBuilder
solche Details behandeln?Aber wenn Sie darauf bestehen, von einem
ZonedDateTime
eine bekommenInstant
, und von diesem erhalten einen Millisekunden-count-from-Epoche. Beachten Sie jedoch, dass dieser Aufruf zu Datenverlust führen kann . Alle Mikrosekunden oder Nanosekunden, die Sie möglicherweise in IhremZonedDateTime
/Instant
haben, werden abgeschnitten (verloren).long millis = firstOfWeek.toInstant().toEpochMilli(); // Possible data loss.
Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie
java.util.Date
,Calendar
, &SimpleDateFormat
.Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Sie können java.time- Objekte direkt mit Ihrer Datenbank austauschen . Verwenden Sie einen JDBC-Treiber, der mit JDBC 4.2 oder höher kompatibel ist . Keine Notwendigkeit für Zeichenfolgen, keine Notwendigkeit für
java.sql.*
Klassen.Woher bekomme ich die java.time-Klassen?
quelle
Beachtung!
while (calendar.get(Calendar.DAY_OF_WEEK) > calendar.getFirstDayOfWeek()) { calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of week. }
ist eine gute Idee, aber es gibt ein Problem: Zum Beispiel bin ich aus der Ukraine und calendar.getFirstDayOfWeek () in meinem Land ist 2 (Montag). Und heute ist 1 (Sonntag). In diesem Fall wird calendar.add nicht aufgerufen.
Der richtige Weg ist also, ">" in "! =" Zu ändern:
while (calendar.get(Calendar.DAY_OF_WEEK) != calendar.getFirstDayOfWeek()) {...
quelle
Um den ersten Tag des Monats zu erhalten, holen Sie sich einfach a
Date
und setzen Sie den aktuellen Tag auf Tag 1 des Monats. Löschen Sie bei Bedarf Stunde, Minute, Sekunde und Millisekunden.private static Date firstDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DATE, 1); return calendar.getTime(); }
Der erste Tag der Woche ist dasselbe, aber
Calendar.DAY_OF_WEEK
stattdessenprivate static Date firstDayOfWeek(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, 1); return calendar.getTime(); }
quelle
import java.time.DayOfWeek;
DayOfWeek[] daysOfWeek = DayOfWeek.values();
Ich habe einige Methoden dafür erstellt:
public static String catchLastDayOfCurrentWeek(String pattern) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); return calendarToString(cal, pattern); } public static String catchLastDayOfCurrentWeek(String pattern) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); cal.add(Calendar.WEEK_OF_YEAR, 1); cal.add(Calendar.MILLISECOND, -1); return calendarToString(cal, pattern); } public static String catchTheFirstDayOfThemonth(Integer month, pattern padrao) { Calendar cal = GregorianCalendar.getInstance(); cal.setTime(new Date()); cal.set(Calendar.MONTH, month); cal.set(Calendar.DAY_OF_MONTH, 1); return calendarToString(cal, pattern); } public static String catchTheLastDayOfThemonth(Integer month, String pattern) { Calendar cal = GregorianCalendar.getInstance(); cal.setTime(new Date()); cal.set(cal.get(Calendar.YEAR), month, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); return calendarToString(cal, pattern); } public static String calendarToString(Calendar calendar, String pattern) { if (calendar == null) { return ""; } SimpleDateFormat format = new SimpleDateFormat(pattern, LocaleUtils.DEFAULT_LOCALE); return format.format(calendar.getTime()); }
Sie können hier mehr sehen .
quelle
Sie können das
java.time
Paket (seit Java8 und spät) verwenden, um Start / Ende von Tag / Woche / Monat zu erhalten.Das folgende Beispiel für eine util-Klasse:
import org.junit.Test; import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.Date; public class DateUtil { private static final ZoneId DEFAULT_ZONE_ID = ZoneId.of("UTC"); public static LocalDateTime startOfDay() { return LocalDateTime.now(DEFAULT_ZONE_ID).with(LocalTime.MIN); } public static LocalDateTime endOfDay() { return LocalDateTime.now(DEFAULT_ZONE_ID).with(LocalTime.MAX); } public static boolean belongsToCurrentDay(final LocalDateTime localDateTime) { return localDateTime.isAfter(startOfDay()) && localDateTime.isBefore(endOfDay()); } //note that week starts with Monday public static LocalDateTime startOfWeek() { return LocalDateTime.now(DEFAULT_ZONE_ID) .with(LocalTime.MIN) .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); } //note that week ends with Sunday public static LocalDateTime endOfWeek() { return LocalDateTime.now(DEFAULT_ZONE_ID) .with(LocalTime.MAX) .with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); } public static boolean belongsToCurrentWeek(final LocalDateTime localDateTime) { return localDateTime.isAfter(startOfWeek()) && localDateTime.isBefore(endOfWeek()); } public static LocalDateTime startOfMonth() { return LocalDateTime.now(DEFAULT_ZONE_ID) .with(LocalTime.MIN) .with(TemporalAdjusters.firstDayOfMonth()); } public static LocalDateTime endOfMonth() { return LocalDateTime.now(DEFAULT_ZONE_ID) .with(LocalTime.MAX) .with(TemporalAdjusters.lastDayOfMonth()); } public static boolean belongsToCurrentMonth(final LocalDateTime localDateTime) { return localDateTime.isAfter(startOfMonth()) && localDateTime.isBefore(endOfMonth()); } public static long toMills(final LocalDateTime localDateTime) { return localDateTime.atZone(DEFAULT_ZONE_ID).toInstant().toEpochMilli(); } public static Date toDate(final LocalDateTime localDateTime) { return Date.from(localDateTime.atZone(DEFAULT_ZONE_ID).toInstant()); } public static String toString(final LocalDateTime localDateTime) { return localDateTime.format(DateTimeFormatter.ISO_DATE_TIME); } @Test public void test() { //day final LocalDateTime now = LocalDateTime.now(); System.out.println("Now: " + toString(now) + ", in mills: " + toMills(now)); System.out.println("Start of day: " + toString(startOfDay())); System.out.println("End of day: " + toString(endOfDay())); System.out.println("Does '" + toString(now) + "' belong to the current day? > " + belongsToCurrentDay(now)); final LocalDateTime yesterday = now.minusDays(1); System.out.println("Does '" + toString(yesterday) + "' belong to the current day? > " + belongsToCurrentDay(yesterday)); final LocalDateTime tomorrow = now.plusDays(1); System.out.println("Does '" + toString(tomorrow) + "' belong to the current day? > " + belongsToCurrentDay(tomorrow)); //week System.out.println("Start of week: " + toString(startOfWeek())); System.out.println("End of week: " + toString(endOfWeek())); System.out.println("Does '" + toString(now) + "' belong to the current week? > " + belongsToCurrentWeek(now)); final LocalDateTime previousWeek = now.minusWeeks(1); System.out.println("Does '" + toString(previousWeek) + "' belong to the current week? > " + belongsToCurrentWeek(previousWeek)); final LocalDateTime nextWeek = now.plusWeeks(1); System.out.println("Does '" + toString(nextWeek) + "' belong to the current week? > " + belongsToCurrentWeek(nextWeek)); //month System.out.println("Start of month: " + toString(startOfMonth())); System.out.println("End of month: " + toString(endOfMonth())); System.out.println("Does '" + toString(now) + "' belong to the current month? > " + belongsToCurrentMonth(now)); final LocalDateTime previousMonth = now.minusMonths(1); System.out.println("Does '" + toString(previousMonth) + "' belong to the current month? > " + belongsToCurrentMonth(previousMonth)); final LocalDateTime nextMonth = now.plusMonths(1); System.out.println("Does '" + toString(nextMonth) + "' belong to the current month? > " + belongsToCurrentMonth(nextMonth)); } }
Testausgabe:
Now: 2020-02-16T22:12:49.957, in mills: 1581891169957 Start of day: 2020-02-16T00:00:00 End of day: 2020-02-16T23:59:59.999999999 Does '2020-02-16T22:12:49.957' belong to the current day? > true Does '2020-02-15T22:12:49.957' belong to the current day? > false Does '2020-02-17T22:12:49.957' belong to the current day? > false Start of week: 2020-02-10T00:00:00 End of week: 2020-02-16T23:59:59.999999999 Does '2020-02-16T22:12:49.957' belong to the current week? > true Does '2020-02-09T22:12:49.957' belong to the current week? > false Does '2020-02-23T22:12:49.957' belong to the current week? > false Start of month: 2020-02-01T00:00:00 End of month: 2020-02-29T23:59:59.999999999 Does '2020-02-16T22:12:49.957' belong to the current month? > true Does '2020-01-16T22:12:49.957' belong to the current month? > false Does '2020-03-16T22:12:49.957' belong to the current month? > false
quelle
ZonedDateTime
oderOffsetDateTime
für ein Datum und eine Uhrzeit, die einen festen Punkt auf der Zeitachse darstellen müssen. (2) Definieren Sie das Ende des Tages als den ersten Moment des nächsten exklusiven Tages und definieren Sie den Tag (und damit die Woche und den Monat) als halboffenes Intervall. Es ist korrekter (ohne die letzte Nanosekunde des Tages auszuschließen) und liefert manchmal einfacheren Code.In diesem Fall:
// get today and clear time of day Calendar cal = Calendar.getInstance(); cal.clear(Calendar.HOUR_OF_DAY); <---- is the current hour not 0 hour cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND);
Der Calendar.HOUR_OF_DAY gibt also 8, 9, 12, 15, 18 als aktuelle Betriebsstunde zurück. Ich denke, es wird besser sein, diese Linie zu ändern, indem:
c.set(Calendar.HOUR_OF_DAY,0);
Auf diese Weise beginnt der Tag immer um 0 Uhr
quelle
Erhalten Sie das erste Datum des nächsten Monats : -
SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy"); String selectedDate="MM-dd-yyyy like 07-02-2018"; Date dt = df.parse(selectedDate);`enter code here` calendar = Calendar.getInstance(); calendar.setTime(dt); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1); String firstDate = df.format(calendar.getTime()); System.out.println("firstDateof next month ==>" + firstDate);
quelle
Sie sollten in der Lage sein, Ihre Nummer in einen Java-Kalender umzuwandeln, z.
Von dort sollte der Vergleich nicht zu schwierig sein.
quelle
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Scanner; /** This Program will display day for, 1st and last days in a given month and year @author Manoj Kumar Dunna Mail Id : [email protected] */ public class DayOfWeek { public static void main(String[] args) { String strDate = null; int year = 0, month = 0; Scanner sc = new Scanner(System.in); System.out.print("Enter YYYY/MM: "); strDate = sc.next(); Calendar cal = new GregorianCalendar(); String [] date = strDate.split("/"); year = Integer.parseInt(date[0]); month = Integer.parseInt(date[1]); cal.set(year, month-1, 1); System.out.println(new SimpleDateFormat("EEEE").format(cal.getTime())); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DAY_OF_YEAR, -1); System.out.println(new SimpleDateFormat("EEEE").format(cal.getTime())); } }
quelle
Simple Solution: package com.util.calendarutil; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class CalUtil { public static void main(String args[]){ DateFormat df = new SimpleDateFormat("dd/mm/yyyy"); Date dt = null; try { dt = df.parse("23/01/2016"); } catch (ParseException e) { System.out.println("Error"); } Calendar cal = Calendar.getInstance(); cal.setTime(dt); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); Date startDate = cal.getTime(); cal.add(Calendar.DATE, 6); Date endDate = cal.getTime(); System.out.println("Start Date:"+startDate+"End Date:"+endDate); } }
quelle
Eine einzeilige Lösung mit Java 8-Funktionen
In Java
LocalDateTime firstOfWeek = LocalDateTime.now().with(ChronoField.DAY_OF_WEEK, 1).toLocalDate().atStartOfDay(); // 2020-06-08 00:00 MONDAY LocalDateTime firstOfMonth = LocalDateTime.now().with(ChronoField.DAY_OF_MONTH , 1).toLocalDate().atStartOfDay(); // 2020-06-01 00:00 // Convert to milliseconds: firstOfWeek.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
In Kotlin
val firstOfWeek = LocalDateTime.now().with(ChronoField.DAY_OF_WEEK, 1).toLocalDate().atStartOfDay() // 2020-06-08 00:00 MONDAY val firstOfMonth = LocalDateTime.now().with(ChronoField.DAY_OF_MONTH , 1).toLocalDate().atStartOfDay() // 2020-06-01 00:00 // Convert to milliseconds: firstOfWeek.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()
quelle
LocalDateTime
einfacher in Millisekunden konvertiert ?Instant
Objekte ihre VerwendungisBefore
,isEqual
oderisAfter
Verfahren. Sie erhalten einen Augenblick trivial vonInstant.ofEpochMilli(someMillisecondValue)
. Und ja, der einfachere Weg, ein zu konvertieren,LocalDateTime
istfirstOfWeek.atZone(ZoneId.systemDefault()).toInstant()
.Ich benutze diesen Trick, um den ersten Tag des aktuellen Monats zu erhalten. Beachten Sie, dass die Reihenfolge 1 für Sonntag 2 für Montag 3 für Dienstag ist .... und so weiter
Calendar cal = new GregorianCalendar(); int startDay = cal.get(Calendar.DAY_OF_YEAR) % 7 + 1; System.out.println(startDay);
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe, durch die verdrängte java.time Klassen. Die meisten Funktionen von java.time werden im ThreeTen-Backport- Projekt auf Java 6 und Java 7 zurückportiert . Weiter angepasst für früheres Android (<26) in ThreeTenABP . Siehe Verwendung von ThreeTenABP… .3
, was Ihrer Meinung nach für Dienstag sein sollte.public static void main(String[] args) { System.out.println(getMonthlyEpochList(1498867199L,12,"Monthly")); } public static Map<String,String> getMonthlyEpochList(Long currentEpoch, int noOfTerms, String timeMode) { Map<String,String> map = new LinkedHashMap<String,String>(); int month = 0; while(noOfTerms != 0) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, month); calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); Date monthFirstDay = calendar.getTime(); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date monthLastDay = calendar.getTime(); map.put(getMMYY(monthFirstDay.getTime()), monthFirstDay + ":" +monthLastDay); month--; noOfTerms--; } return map; }
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleTextFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen. Siehe Tutorial von Oracle .