Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte die dazwischen liegenden Tage berechnen zwischen zwei Daten (heutiges Datum und Publikationsdatum) berechnen und gehe in den ersten Schritten wie folgt vor:
Java:
(...)
protected Date publicationDate;
Calendar cal1 = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();
cal2.setTime(publicationDate);
Für die letzte Zeile "cal2.set ... " kriege ich aber eine Fehlermeldung - und ich weiss nicht warum. Settime fordert doch ein Date-Objekt als Parameter - also was läuft da schief...?
Gruss, BerndBrot
Sollte keinen Unterscheid machen, da java.sql.Date von java.util.Date erbt. Ich tippe ehr auf eine NPE weil publicationDate null ist , aber die Fehlermeldung wäre wirklich hilfreich.
wie gesagt: keinen Code direkt in eine Klasse,
zumal bei diesen drei Zeilen direkt hintereinander lendingDate doch immer null sein muss,
gäbe wieder eine NullPointerException wie oben, falls nicht vom Compiler bereits verhindert
Nein, der zweite Code ist in einer Methode,und die Fehlermeldung kommt dennoch:
Java:
package buch;
import java.util.*;
/**
*
* @author BerndBrot
*/
public class Buch {
// protected attributes --------------------------------------
// The id of the book in the library catalogue
protected int id;
// The isbn of the book
protected String isbn;
// The title of the book
protected String title;
// The author of the book
protected String author;
// The date when the book was published
protected Date publicationDate;
// The date when the book was lended
protected Date lendingDate;
// Status of the book: is it lended right now?
protected boolean lended;
public int getId() {
return id;
}
public String getIsbn() {
return isbn;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public Date getPublicationDate() {
return publicationDate;
}
public Date getLendingDate() {
return lendingDate;
}
public boolean getLended() {
return lended;
}
public void setIsbn(String i) {
isbn = i;
}
public void setTitle(String t) {
title = t;
}
public void setAuthor(String s) {
author = s;
}
public void setPublicationDate(Date d) {
publicationDate = d;
}
public void setLendingDate(Date l) {
lendingDate = l;
}
public void setGetLended(boolean b) {
lended = b;
}
public int age()
{Calendar cal1 = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();
Date xyz = new Date();
cal2.setTime(publicationDate);
return 0;
}
public Date returnDate()
{
Date date2 = new Date();
date 2 = (lendingDate.getTime() + 1000 * 60 * 24 * 30);
// + 30 Tage
return new Date();
}
}
lendingDate.getTime() ist offensichtlich ein long, kann man in der API nachschauen
1000 * 60 * 24 * 30 ist eher ein int als ein long, aber spätestens durch das + wird
aus long + long doch gewiss ein long und kein Date
in eine Date-Variable kannst du kein long reinschreiben?!
innerhalb einer Klasse in einer nichtstatischen Methode befindet man sich quasi 'in einem Objekt',
dort kann man ohne weiteres auf eigene und geerbte Methoden und Attribute zugreifen,
etwas deutlicher wirds noch mit
return this.datetoString(publicationDate);
statische Methoden/ Attribute genauso, auch von statischen Methoden innerhalb einer Klasse aus,
dort aber besser mit Klassennamen:
return Klassenname.statischeMethode(parameter);