- Beiträge: 45
Kalenderwoche in Datum umsetzen
- Mueck
- Autor
- Offline
- Benutzer
Weniger
Mehr
8 Jahre 4 Monate her #2761
von Mueck
Kalenderwoche in Datum umsetzen wurde erstellt von Mueck
Hallo zusammen,
aktuell haben wir in einem Datenfeed die Angabe der Kalenderwoche stehen wie z.B. für diese Woche: 2816
Damit können die meisten Systeme jedoch nichts anfangen und ich möchte deshalb die Kalenderwoche in ein Datum umwandeln. Denkbar wäre die Wahl zwischen 1. (Montag) und letztem (Freitag) Wochentag. Mit dem Heater AddDays könnte man dann ja noch, falls erforderlich, Zeit hinzufügen.
Gibt es dafür eine Lösung?
Viele Grüße
Helmut Mueck
aktuell haben wir in einem Datenfeed die Angabe der Kalenderwoche stehen wie z.B. für diese Woche: 2816
Damit können die meisten Systeme jedoch nichts anfangen und ich möchte deshalb die Kalenderwoche in ein Datum umwandeln. Denkbar wäre die Wahl zwischen 1. (Montag) und letztem (Freitag) Wochentag. Mit dem Heater AddDays könnte man dann ja noch, falls erforderlich, Zeit hinzufügen.
Gibt es dafür eine Lösung?
Viele Grüße
Helmut Mueck
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
8 Jahre 4 Monate her - 8 Jahre 4 Monate her #2763
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Mueck,
dafür benötigen Sie ein kleines Skript für den .NET Script Heater .
Das Skript gibt das Datum (jeweils Montag) der Kalenderwoche des angegebenen Jahres zurück und benötig dazu zwei Eingangsparameter.
Im Anhang finden Sie ein kleines Beispiel wie es verwendet werden kann. Um für Ihren Fall eine 4-stellige Jahreszahl zu erhalten wurde im Beispiel der String Append Heater verwendet um die „20“ vor der zweistelligen Jahres anzufügen.
Wenn Sie anstatt Montag das Datum vom Freitag der Kalenderwoche haben möchten können Sie dies über den AddDays Heater + 4 Tage erreichen. Ist ebenfalls im Beispiel enthalten.
Wichtig: Damit das Skript funktioniert müssen Sie in den Eigenschaften des .NET Script Heater auf dem Reiter erweitert unter „Usings/Imports“ am Ende folgende Zeichenfolge angeben, siehe Screenshot.
C# .NET Skript
dafür benötigen Sie ein kleines Skript für den .NET Script Heater .
Das Skript gibt das Datum (jeweils Montag) der Kalenderwoche des angegebenen Jahres zurück und benötig dazu zwei Eingangsparameter.
- Die Kalenderwoche
- Das Jahr, 4 Stellig. So ist das Skript etwas flexibler einsetzbar
Im Anhang finden Sie ein kleines Beispiel wie es verwendet werden kann. Um für Ihren Fall eine 4-stellige Jahreszahl zu erhalten wurde im Beispiel der String Append Heater verwendet um die „20“ vor der zweistelligen Jahres anzufügen.
Wenn Sie anstatt Montag das Datum vom Freitag der Kalenderwoche haben möchten können Sie dies über den AddDays Heater + 4 Tage erreichen. Ist ebenfalls im Beispiel enthalten.
Wichtig: Damit das Skript funktioniert müssen Sie in den Eigenschaften des .NET Script Heater auf dem Reiter erweitert unter „Usings/Imports“ am Ende folgende Zeichenfolge angeben, siehe Screenshot.
C# .NET Skript
Code:
public object DoWork()
{
if (InValues.Length != 2)
throw new Exception("zwei Eingangsparameter erwartet!");
// 1. Parameter = Wochen
int weeks = (int)InValues[0].GetInt();
// 2. Parameter = Jahr
int year = (int)InValues[1].GetInt();
// zuerst den 1. Montag des Jahres berechnen
CultureInfo currentCulture = CultureInfo.CurrentCulture;
Calendar calendar = currentCulture.Calendar;
DateTime dt = new DateTime(year, 1, 1);
while (true)
{
int i = calendar.GetWeekOfYear(dt, System.Globalization.CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
if (i == 1)
break;
dt = dt.AddDays(1);
}
// auf das Datum der 1. Kalenderwoche des Jahres die Wochen addieren und zurückgeben
return calendar.AddWeeks(dt, weeks - 1);
}
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Letzte Änderung: 8 Jahre 4 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Mueck
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
8 Jahre 4 Monate her #2766
von Mueck
Mueck antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Stark,
funktioniert einwandfrei! Vielen Dank für den Support.
Viele Grüße
Helmut Mück
funktioniert einwandfrei! Vielen Dank für den Support.
Viele Grüße
Helmut Mück
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Mueck
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
7 Jahre 11 Monate her #2954
von Mueck
Mueck antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Stark,
ich hole dieses Thema noch einmal hervor, weil sich jetzt eine weitere, aber veränderte Anforderung ergeben hat. Read und Write Seite ist ein Textadapter.
In dem Feld liefkw können drei verschiedene Angaben stehen:
1. Eine 0, wenn der Artikel nicht lieferbar ist und der Liefertermin nicht bekannt ist
2. Die Lieferwoche in Form von z.B. 1650 (KW 50 im Jahr 2016)
3. Feld ist leer
Jetzt soll die 0 übertragen werden und das leere Feld soll leer bleiben. Die Lieferwoche wird mit dem .NET Script Heater in ein Datum umgerechnet und übertragen werden, was ja bereits funktioniert. Wie gehe ich am besten vor, um die o.a. Punkte 1. und 3. richtig einzubinden?
Viel Grüße
Helmut Mück
ich hole dieses Thema noch einmal hervor, weil sich jetzt eine weitere, aber veränderte Anforderung ergeben hat. Read und Write Seite ist ein Textadapter.
In dem Feld liefkw können drei verschiedene Angaben stehen:
1. Eine 0, wenn der Artikel nicht lieferbar ist und der Liefertermin nicht bekannt ist
2. Die Lieferwoche in Form von z.B. 1650 (KW 50 im Jahr 2016)
3. Feld ist leer
Jetzt soll die 0 übertragen werden und das leere Feld soll leer bleiben. Die Lieferwoche wird mit dem .NET Script Heater in ein Datum umgerechnet und übertragen werden, was ja bereits funktioniert. Wie gehe ich am besten vor, um die o.a. Punkte 1. und 3. richtig einzubinden?
Viel Grüße
Helmut Mück
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 11 Monate her #2955
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Mück,
Sie benötigen dazu eine vorgelagerte IF-THEN-ELSE Bedingung die im Fall „=0“ oder „= Leer (Empty)“ den Ursprungswert durchleitet. Im Anhang habe ich das Beispiel dementsprechend angepasst.
Weitere Beispiele zum IF-THEN-ELSE Heater finden Sie hier
Sie benötigen dazu eine vorgelagerte IF-THEN-ELSE Bedingung die im Fall „=0“ oder „= Leer (Empty)“ den Ursprungswert durchleitet. Im Anhang habe ich das Beispiel dementsprechend angepasst.
Weitere Beispiele zum IF-THEN-ELSE Heater finden Sie hier
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Mueck
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
7 Jahre 11 Monate her #2956
von Mueck
Mueck antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Stark,
natürlich funktioniert das wie beschrieben. Danke! Manchmal sieht man den Wald vor lauter Bäumen nicht.
Bei der Umrechnung der Lieferwoche in ein Datum erfolgt die Ausgabe in der Form: tt.mm.yyyy 00:00
Auf die 00:00 würde ich gern verzichten, weiß aber nicht an welcher Stelle im .netscript Heater ich schrauben muss?
Vermutlich hier, aber wie? DateTime dt = new DateTime(year, 1, 1);
Viele Grüße
Helmut Mueck
natürlich funktioniert das wie beschrieben. Danke! Manchmal sieht man den Wald vor lauter Bäumen nicht.
Bei der Umrechnung der Lieferwoche in ein Datum erfolgt die Ausgabe in der Form: tt.mm.yyyy 00:00
Auf die 00:00 würde ich gern verzichten, weiß aber nicht an welcher Stelle im .netscript Heater ich schrauben muss?
Vermutlich hier, aber wie? DateTime dt = new DateTime(year, 1, 1);
Viele Grüße
Helmut Mueck
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 11 Monate her - 7 Jahre 11 Monate her #2957
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Mück,
In dem Fall benötigen Sie noch einen String Format Heater der die Datums- und Zeitangabe in eine reine Datumsausgabe formatiert ausgibt. Das Beispiel wurde dementsprechend angepasst.
PS: Wenn Sie lieber Skript verwenden möchten müssten Sie die vorletzte Zeile mit dem „return“ austauschen in return calendar.AddWeeks(dt, weeks - 1).ToString("dd.MM.yyyy");
In dem Fall benötigen Sie noch einen String Format Heater der die Datums- und Zeitangabe in eine reine Datumsausgabe formatiert ausgibt. Das Beispiel wurde dementsprechend angepasst.
PS: Wenn Sie lieber Skript verwenden möchten müssten Sie die vorletzte Zeile mit dem „return“ austauschen in return calendar.AddWeeks(dt, weeks - 1).ToString("dd.MM.yyyy");
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Letzte Änderung: 7 Jahre 11 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Mueck
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
7 Jahre 11 Monate her #2958
von Mueck
Mueck antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Stark,
ich habe im Script den Eintrag bezüglich der Datumsausgabe geändert. Die Datumsausgabe erfolgt trotzdem mit 00:00. Dann habe ich zusätzlich den Format Heater verwendet. Nur dann ist die Ausabe wie gewünscht das Datum ohne Zeitangabe dahinter.
Jetzt ergibt sich noch das Problem, dass in dem Feld liefkw der Wert 9999 stehen kann. Den kann ich zwar mit der IF THEN ELSE Bedingung, wie benötigt, durchleiten, er wird aber durch das Script in das Datum 29.11.2100 umgerechnet. Vielleicht kann man im Script den Bereich bis zu einem bestimmten Jahr eingrenzen wie z.B. 3001 = 1. Kalenderwoche im Jahr 2030? Oder gibt es noch eine andere Lösung?
Viele Grüße
Helmut Mueck
ich habe im Script den Eintrag bezüglich der Datumsausgabe geändert. Die Datumsausgabe erfolgt trotzdem mit 00:00. Dann habe ich zusätzlich den Format Heater verwendet. Nur dann ist die Ausabe wie gewünscht das Datum ohne Zeitangabe dahinter.
Jetzt ergibt sich noch das Problem, dass in dem Feld liefkw der Wert 9999 stehen kann. Den kann ich zwar mit der IF THEN ELSE Bedingung, wie benötigt, durchleiten, er wird aber durch das Script in das Datum 29.11.2100 umgerechnet. Vielleicht kann man im Script den Bereich bis zu einem bestimmten Jahr eingrenzen wie z.B. 3001 = 1. Kalenderwoche im Jahr 2030? Oder gibt es noch eine andere Lösung?
Viele Grüße
Helmut Mueck
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 11 Monate her #2960
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Mueck,
was möchten Sie den mit dem Wert „9999“ tun?
Wenn Sie daraus ein spezielles Datum umwandeln möchten reicht es aus wenn Sie den Wert vorher mittels des String Replace Heater in die passende Jahres und Wochenzahl umwandeln/ersetzen.
Oder soll der Wert einfach wie bei 0 bzw. Leer 1:1 in den Ausgabe CSV Datei geschrieben werden? In dem Fall müssen Sie in der IF-THEN-ELSE Bedingung zusätzlich noch diesen Wert eintragen.
was möchten Sie den mit dem Wert „9999“ tun?
Wenn Sie daraus ein spezielles Datum umwandeln möchten reicht es aus wenn Sie den Wert vorher mittels des String Replace Heater in die passende Jahres und Wochenzahl umwandeln/ersetzen.
Oder soll der Wert einfach wie bei 0 bzw. Leer 1:1 in den Ausgabe CSV Datei geschrieben werden? In dem Fall müssen Sie in der IF-THEN-ELSE Bedingung zusätzlich noch diesen Wert eintragen.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Mueck
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 45
7 Jahre 11 Monate her #2964
von Mueck
Mueck antwortete auf Kalenderwoche in Datum umsetzen
Hallo Herr Stark,
vielen Dank für die, wie immer, hilfreichen Hinweise. Da der Shopprogrammierer noch andere Anpassungwünsche hatte, haben wir die Verwendung verschiedener Kennzeichen bereits in der WaWi geändert. Wir leiten also jetzt nur noch 0 und leer durch und rechnen die KW in ein Datum um und addieren noch Tage hinzu. Das klappt, dank Ihrer Hilfe, sehr gut. Danke!
Viele Grüße
Helmut Mueck
vielen Dank für die, wie immer, hilfreichen Hinweise. Da der Shopprogrammierer noch andere Anpassungwünsche hatte, haben wir die Verwendung verschiedener Kennzeichen bereits in der WaWi geändert. Wir leiten also jetzt nur noch 0 und leer durch und rechnen die KW in ein Datum um und addieren noch Tage hinzu. Das klappt, dank Ihrer Hilfe, sehr gut. Danke!
Viele Grüße
Helmut Mueck
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.343 Sekunden