public double getProgressBarValue(long nowTime) {
return (double) (time - nowTime) / (1000 * 60 * 60 * 24);
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
if (hasYear) {
years = currentYear - cal.get(Calendar.YEAR);
}
cal.set(Calendar.YEAR, currentYear);
cal.set(Calendar.HOUR_OF_DAY, 12);
if (cal.before(nowCal)) {
cal.set(Calendar.YEAR, currentYear + 1);
years++;
}
contacts1.add(new Element(cal.getTimeInMillis(), name);
Die Berechnung der Differenz hatte ich eigentlich schon (das hättest du an dem Snippet erkennen können), ChronoUnit wollte ich vermeiden, meine Frage zielte dahingehend, was passierte, wenn jemand am 29.2. Geburtstag hat... oder anders: Wie weit können ein und der darauffolgende Geburtstag auseinander liegen?return (int) ChronoUnit.DAYS.between(today, birthday.atYear(year));
Wenn man etwas vermeiden will, dann sind das Date und Calendar.ChronoUnit wollte ich vermeiden
Das kommt natürlich darauf an, wie man das sehen will, aber prinzipiell endet ein Lebensjahr mit Ablauf des Tages, der dem Geburtstag vorangeht. Bist Du am 1. März geboren, endet das Lebensjahr mit Ablauf des 28. bzw. 29. Februar. Bist Du am 29. Februar geboren, endet das Lebensjahr mit Ablauf des 28. Februars.wenn jemand am 29.2. Geburtstag hat... oder anders: Wie weit können ein und der darauffolgende Geburtstag auseinander liegen?
public int daysUntil(MonthDay birthday) {
LocalDate today = LocalDate.now();
int year = today.getYear();
LocalDate birthdayDate = birthday.atYear(year).plusDays(birthday.isValidYear(year) ? 0 : 1);
if (birthdayDate.isBefore(today)) {
birthdayDate = birthdayDate.plusYears(1);
}
return (int) ChronoUnit.DAYS.between(today, birthdayDate);
}
Nönö, ChronoUnit und die neue Date API sind leider verhunzt worden... und es bestand auch gar keine Notwendigkeit, etwas an der Calendar API zu ändern...Wenn man etwas vermeiden will, dann sind das Date und Calendar.
Das war nicht Deine Frage:Du hast leider meine Frage nicht beantwortet, was 29.3. + 1 Jahr ergibt.
Habe ich Dir in #3 Code geliefert.es hat jemand am 29.2. Geburtstag und heute ist der 10.3. ... In wie vielen Tagen hat diese Person dann das nächste Mal Geburtstag?
Habe ich Dir in #4 beantwortet und in #5 Code geliefertwas passierte, wenn jemand am 29.2. Geburtstag hat...
Wieder den 29.3., was sonst?was 29.3. + 1 Jahr ergibt.
Die Frage ist relativ unsinnig, da einfach nicht eindeutig.Du hast leider meine Frage nicht beantwortet, was 29.3. + 1 Jahr ergibt.
Heisst das, dass wir uns jede weitere Antwort sparen können?Ach, Tobias…
Nönö, ChronoUnit und die neue Date API sind leider verhunzt worden... und es bestand auch gar keine Notwendigkeit, etwas an der Calendar API zu ändern...
Ich bleibe bei Date und Calendar.
Du hast leider meine Frage nicht beantwortet, was 29.3. + 1 Jahr ergibt.
LocalDate date = LocalDate.of(2022, 3, 29);
LocalDate todaysDate = LocalDate.now();
date = date.plusYears(1);
long ergebnis = todaysDate.until(date, ChronoUnit.DAYS);
System.out.println(ergebnis);
LocalDate date = LocalDate.of(2019, 3, 29);
LocalDate todaysDate = LocalDate.of(2019, 3, 29);
date = date.plusYears(1);
long ergebnis = todaysDate.until(date, ChronoUnit.DAYS);
System.out.println(ergebnis);
Sagen wir, es hat jemand am 29.2. Geburtstag und heute ist der 10.3. ... In wie vielen Tagen hat diese Person dann das nächste Mal Geburtstag?
Nein, denn es geht um abgeschlossene Lebensjahre. @mihe7 hat das ja doch schon ausgeführt.wenn man es genau nimmt in 1461 - die 10 Tage im März also 1451 Tage.
Genau: § 187 Abs. 2 und § 188 Abs. 3 BGBIn Deutschland wäre dies z.B. §187, das dies ganz offiziell regelt (Da geht es um Fristen und ausdrücklich auch Geburtstage.
import java.util.Calendar;
public class Birt {
public static void main(String[] args) {
final long nowTime = System.currentTimeMillis();
System.out.printf("%.04f%n", daysBetweenBirthday(nextBirthday(Calendar.JULY, 9, nowTime), nowTime));
System.out.printf("%.04f%n", daysBetweenBirthday(nextBirthday(Calendar.JULY, 10, nowTime), nowTime));
System.out.printf("%.04f%n", daysBetweenBirthday(nextBirthday(Calendar.JULY, 11, nowTime), nowTime));
System.out.printf("%.04f%n", daysBetweenBirthday(nextBirthday(Calendar.JULY, 12, nowTime), nowTime));
}
public static long nextBirthday(int month, int day, long nowTime) {
Calendar nowCal = Calendar.getInstance();
nowCal.setTimeInMillis(nowTime);
int currentYear = nowCal.get(Calendar.YEAR);
Calendar birthday = Calendar.getInstance();
birthday.set(currentYear, month, day, 12, 0, 0);
if (nowCal.after(birthday)) {
birthday.set(Calendar.YEAR, currentYear + 1);
}
return birthday.getTimeInMillis();
}
public static double daysBetweenBirthday(long nextBirthday, long nowTime) {
return (double) (nextBirthday - nowTime) / (1000 * 60 * 60 * 24);
}
public static double maxDaysBetweenBirthday() {
return 999; // ?
}
}
a) Wie groß ist die Abweichung bei 365 und 366 als MAX-Wert. Ich vermute, dass die Abweichung von ggf. ca. 0,3 - 0,4% von einem User nicht bemerkt wird. Daher ist die Frage, in wie weit hier wirklich ein Bedarf besteht oder ob man das einfach konstant als 366 annehmen kann.Was sollte die Methode maxDaysBetweenBirthday zurückgeben, wie viele Tage können zwischen zwei Geburtstagen liegen? Ich brauche diesen Wert für den Maximalwert der ProgressBar. =)
heucheln konntest du schon immer gut.Dein Code ist extrem unleserlich
Die Ausgabe ist:Also kannst Du die Anzahl der Tage zwischen dem kommenden und den vergangenen Geburtstag ermitteln und dann weisst Du, ob es 365 oder 366 Tage sind.
Immer = seit 50 min? Oder ist das etwa wieder einer der vielen Accounts....heucheln konntest du schon immer gut.Bodenlose Frechheit Deine Behauptungen.
Ok, Du findest deinen Code also besonders lesbar und gut. Will ich nicht weiter vertiefen zumal @mrBrown ja gezeigt hat, dass er Deinen Account immer sofort sperrt so dass eine Diskussion auch sehr schwer würde ...heucheln konntest du schon immer gut.Bodenlose Frechheit Deine Behauptungen.
Das ist relevant aus welchem Grund? Weil derzeit kein Schaltjahr ist, muss man das nicht berücksichtigen? Da Dein Code bis zum nächsten Schaltjahr eh niemanden mehr interessieren wird?Wir haben aber gerade kein Schlatjahr. Wusstest du das schon?
Werde eh gleich gesperrt, ist egal wie ich antworte^^Immer = seit 50 min? Oder ist das etwa wieder einer der vielen Accounts....
Dann lass es doch endlich malWerde eh gleich gesperrt, ist egal wie ich antworte^^
manchmal zweifle ich auch an deinem IQ... starte das Snippet, dann siehst du die genaue Ausgabe.wenn 0 Tage zwischen zwei Geburtstagen sind, dann kann man jeden Tag Geburtstag feiern
Ja, Tobias scheint bei @mrBrown grade "KoS" (Kill on Sight) zu sein. Diese neue Account zeigt deutlich, dass der alte gesperrt wurde. Und dank so netter Antworten gab es halt wieder ein Report von wegen Bällespieleparadies ...Immer = seit 50 min? Oder ist das etwa wieder einer der vielen Accounts....
Nein, wenn Du einfach vernünftig antworten würdest statt direkt Kommentare persönlich zu nehmen, dann wäre es evtl. nicht so. Wobei Du Dich halt schon extrem verbrannt hast.Werde eh gleich gesperrt, ist egal wie ich antworte^^
Das ist doch das beste Beispiel. Dabei geht es mir nicht einmal um die Beleidigung. Ich habe versucht, die eine Hilfestellung zu geben. Aber Du versuchst noch nicht einmal, diese zu verstehen.manchmal zweifle ich auch an deinem IQ... starte das Snippet, dann siehst du die genaue Ausgabe.
Dein Problem ist also schlicht, dass Du nicht einmal versuchst, die Hilfe zu verstehen, die man versucht Dir zu geben. Und das ist vermutlich auch der Grund, warum man Dir keine weitere Chance mehr geben will. Das ist für mich nicht nachvollziehbar! Zumal diese ganze Thematik doch von der Komplexität her einfach ist. Daher ist wirklich die Frage, ob Du "unser" "TobiasNRW" von damals bist oder um wir hier schon eine Sammlung von solchen Leuten haben ... Denn der hatte damals doch wenigstens etwas drauf ... aber die Problematik hier hat doch nicht wirklich irgend eine besondere Komplexität... Aber das ist mir auch egal. Du hast ein Problem genannt, ich habe versucht, Dir eine Lösungsidee zu nennen. Diese scheinst Du abzulehnen. Ist ok.Also kannst Du die Anzahl der Tage zwischen dem kommenden und den vergangenen Geburtstag ermitteln
Dann wüssten wir ja gar nicht das er es ist und alles wäre okay... Aber da das scheinbar nicht geht bin ich mit der Linie von @mrBrown vollkommen einverstanden.Nein, wenn Du einfach vernünftig antworten würdest statt direkt Kommentare persönlich zu nehmen, dann wäre es evtl. nicht so.