Home › Forum › Allgemeines › Gewünschte Features › Kalenderwoche
- Dieses Thema hat 1 Antwort und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 2 Jahre, 8 Monaten von
caf.
-
AutorBeiträge
-
17 Mai 2012 um 22:30 Uhr #5610
Markus Glitzner
TeilnehmerHallo!
Hier ein paar Änderungsvorschläge bzw. neue Funktionen.
Erster Tage der Woche:
Nachdem in unsereren Regionen der Wochenbeginn in aller Regel am Montag ist, wäre es gut, wenn das auch im Datechooser so eingestellt werden könnte und nicht der Sonntag. Neue Benutzer klicken immer statt MO auf SO und statt SO auf SA. Sie auch: https://www.nuclos.de/index.php/de/forum/maskenlayouts/3631-wochenstart-im-kalender#3692Kalenderwoche im Datechooser:
Es wäre recht praktisch, wenn im Datechooser die Kalenderwoche am linken Rand angezeigt wird. Gerade im Transportwesen wird fast ausschließlich mit Kalenderwochen gearbeitet. Bezüglich MinimalDaysInFirstWeek und FirstDayOfWeek wäre die Frage ob die Einstellungen Client- oder Serverseitig gespeicher werden. Sie auch: https://www.nuclos.de/index.php/de/forum/maskenlayouts/3632-navigation-im-kalender#3693Datentyp Kalenderwoche:
Ein nuclos Datentyp der mit Kalenderwochen umgehen kann, wäre auch gut. Dazu folgende Überlegung: Das Standardformat ist immer yyyy/ww somit kann auch sortiert werden. Die Eingabe wird überprüft, ob es sich um einen richtigen Wert handelt oder es erfolgen bestimmte Berechnungen, je nachdem was der Benutzer eingibt.0 ergibt die Kalenderwoche des aktuellen Datums z.B. 2012/20
5 ergibt das aktuelle Jahr mit der eingegeben Kalenderwoche z.B. 2012/5
+5 zum aktuellen Datum werden 5 Wochen dazugezählt z.B. 2012/25
-5 vom aktuellen Datum werden 5 Wochen abgezogen z.B. 2012/15Hierzu eine Bibliotheksregel, die ich ereits gemacht hab.
import org.nuclos.server.masterdata.valueobject.*;
import org.nuclos.server.ruleengine.*;
import java.util.*;public abstract class Kalender {
public static String Woche(Date s) throws NuclosBusinessRuleException {
Calendar c = Calendar.getInstance();
c.setMinimalDaysInFirstWeek(4);
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(s);return Woche(c);
}public static String Woche(String kw) throws NuclosBusinessRuleException {
if (kw != null) {
Calendar c = Calendar.getInstance();
c.setMinimalDaysInFirstWeek(4);
c.setFirstDayOfWeek(Calendar.MONDAY);if (kw.matches("0|\+0|\-0")) {
//do nothing, it's the current week
} else if (kw.matches("([1-9])|((0[1-9])|([1-4][0-9])|(5[0-2]))")) {
//set the given week in current year
c.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(kw));
} else if (kw.matches("(\+|\-)(([1-9])|((0[1-9])|([1-4][0-9])|(5[0-2])))")) {
//add the given weeks to the current date
c.add(Calendar.WEEK_OF_YEAR, Integer.parseInt(kw.replace("+", "")));
} else if (!kw.matches("(19|20)\d\d/?((0[1-9])|([1-4][0-9])|(5[0-2]))")) {
//the given week is not a valid expression
throw new NuclosBusinessRuleException("Die Kalenderwoche hat kein gültiges Format!");
} else {
//it's a valid expression, set the date by parsing the given week
kw = kw.replace("/", "");
c.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(kw.substring(4,6)));
c.set(Calendar.YEAR, Integer.parseInt(kw.substring(0,4)));
c.set(Calendar.DAY_OF_WEEK, 1);
}return Woche(c);
}return null;
}public static String Woche(Calendar c) throws NuclosBusinessRuleException {
Integer year = c.get(Calendar.YEAR);
Integer month = c.get(Calendar.MONTH);
Integer week = c.get(Calendar.WEEK_OF_YEAR);//Fehlerkorrektur, sonst passt der erste und letzte Tag des Jahres nicht nicht!
//vermutlich, weil der Wochenbeginn in nuclos SO statt MO ist
if (week.equals(52) && month.equals(0)) {
year--;
} else if (week.equals(1) && month.equals(11)) {
year++;
}String format = String.format("%%0%dd", 2);
return year.toString() + "/" + String.format(format, week);
}
}
Gruß
Hugo14 September 2020 um 12:49 Uhr #26180caf
VerwalterIN Version 4.42 ist dies schon der fall
-
AutorBeiträge