Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Kalenderwoche in Datum umsetzen

Kalenderwoche in Datum umsetzen 4 Monate 3 Wochen her #2761

  • Mueck
  • Muecks Avatar
  • Offline
  • New Member
  • Beiträge: 13
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 4 Monate 2 Wochen her #2763

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
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.
  1. Die Kalenderwoche

  2. 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.



Dateianhang:

Dateiname: datum-aus-...oche.zip
Dateigröße:2 KB


C# .NET Skript
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.
Letzte Änderung: 4 Monate 2 Wochen her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 4 Monate 2 Wochen her #2766

  • Mueck
  • Muecks Avatar
  • Offline
  • New Member
  • Beiträge: 13
Hallo Herr Stark,

funktioniert einwandfrei! Vielen Dank für den Support.

Viele Grüße
Helmut Mück
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 1 Woche 23 Stunden her #2954

  • Mueck
  • Muecks Avatar
  • Offline
  • New Member
  • Beiträge: 13
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 1 Woche 7 Stunden her #2955

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
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

Dateianhang:

Dateiname: datum-aus-...he-2.zip
Dateigröße:2 KB
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 1 Woche 31 Minuten her #2956

  • Mueck
  • Muecks Avatar
  • Offline
  • New Member
  • Beiträge: 13
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 6 Tage 21 Stunden her #2957

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
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.

Dateianhang:

Dateiname: datum-aus-...he-3.zip
Dateigröße:3 KB


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.
Letzte Änderung: 6 Tage 21 Stunden her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 6 Tage 7 Stunden her #2958

  • Mueck
  • Muecks Avatar
  • Offline
  • New Member
  • Beiträge: 13
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 5 Tage 4 Stunden her #2960

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
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.
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.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Kalenderwoche in Datum umsetzen 2 Tage 43 Minuten her #2964

  • Mueck
  • Muecks Avatar
  • Offline
  • New Member
  • Beiträge: 13
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.103 Sekunden