Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

Kalenderwoche für Dateiname ermitteln

  • Andreas Knobloch
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
9 Jahre 10 Monate her #1647 von Andreas Knobloch
Kalenderwoche für Dateiname ermitteln wurde erstellt von Andreas Knobloch
Hallo Stark,

ich habe folgende Herausforderung:
Für den Dateinamen eines Exportes benötige ich die Kalenderwoche (Datum wird übergeben bzw. Vortag) im Dateinamen.

Ich bin auf dieses Skript gestoßen.
Code:
C#-Code: private void NumberOfWeek(DateTime dte) { #region WeekNr // Aktuelle Kultur ermitteln CultureInfo currentCulture = CultureInfo.CurrentCulture; // Aktuellen Kalender ermitteln Calendar calendar = currentCulture.Calendar; // Kalenderwoche über das Calendar-Objekt ermitteln int calendarWeek = calendar.GetWeekOfYear(dte, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); // Überprüfen, ob eine Kalenderwoche größer als 52 // ermittelt wurde und ob die Kalenderwoche des Datums // in einer Woche 2 ergibt: In diesem Fall hat // GetWeekOfYear die Kalenderwoche nicht nach ISO 8601 // berechnet (Montag, der 31.12.2007 wird z. B. // fälschlicherweise als KW 53 berechnet). // Die Kalenderwoche wird dann auf 1 gesetzt if (calendarWeek > 52) { dte = dte.AddDays(7); int testCalendarWeek = calendar.GetWeekOfYear(dte, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); if (testCalendarWeek == 2) calendarWeek = 1; } WeekNr = calendarWeek; // Das Jahr der Kalenderwoche ermitteln int year = dte.Year; if (calendarWeek == 1 && dte.Month == 12) year++; if (calendarWeek >= 52 && dte.Month == 1) year--; YearNr = year; }

Originalartikel:
http://dotnet-snippets.de/dns/kalenderwo...nen-SID260.aspx


Leider funktioniert das Skript im Flowheater nicht. Mit dem verlinkten Originalartikel bin ich leider auch nicht weiter gekommen.

Gibt es hier eventuell eine einfachere Lösung mit Heatern? Oder ein einfacheres Skript?

Mit freundlichen Grüßen

Andreas

Mit freundlichen Grüßen
Andreas Knobloch

Bitte Anmelden um der Konversation beizutreten.

Mehr
9 Jahre 10 Monate her - 9 Jahre 10 Monate her #1650 von FlowHeater-Team
FlowHeater-Team antwortete auf Kalenderwoche für Dateiname ermitteln
Hallo Herr Knobloch,

damit das Beispiel funktioniert müssen Sie im .NET Skript Heate r noch ein zusätzliches „using System.Globalization;“ im Reiter „Erweitert“ angeben. Siehe Screenshot.



Das Skript habe ich etwas angepasst, so dass Sie dem Heater einen Datumswert übergeben können und die Kalenderwoche zurückgeliefert wird. Im Anhang befindet sich ein kleines Beispiel.

C# Code um die aktuelle Kalenderwoche zu ermitteln
Code:
public object DoWork() { if (InValues.Length != 1) throw new Exception("ein Eingangsparameter erwartet"); object o = InValues[0].GetDateTime(); if (o == null) return -1; // Kein Datum übergeben DateTime dt = (DateTime)o; return NumberOfWeek(dt); } private int NumberOfWeek(DateTime dte) { CultureInfo currentCulture = CultureInfo.CurrentCulture; Calendar calendar = currentCulture.Calendar; int calendarWeek = calendar.GetWeekOfYear(dte, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); if (calendarWeek > 52) { dte = dte.AddDays(7); int testCalendarWeek = calendar.GetWeekOfYear(dte, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); if (testCalendarWeek == 2) calendarWeek = 1; } return calendarWeek; }


Dateianhang:

Dateiname: kalenderwoche.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.
Anhänge:
Letzte Änderung: 9 Jahre 10 Monate her von FlowHeater-Team.

Bitte Anmelden um der Konversation beizutreten.

  • Andreas Knobloch
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
9 Jahre 10 Monate her #1652 von Andreas Knobloch
Andreas Knobloch antwortete auf Kalenderwoche für Dateiname ermitteln
Hallo Herr Stark,

vielen Dank für die Unterstützung. Ich habe das Skript etwas modifiziert und funktioniert super.
Code:
bool bSetFileName = true; public object DoWork() { if (InValues.Length != 1) throw new Exception("ein Eingangsparameter erwartet"); // Dateiname nicht im Testmodus umbiegen if (bSetFileName && AdapterWrite.OnlyTest == false){ // Dateiname nur beim 1. Datensatz/Zeile ändern bSetFileName = false; // Vom Vortag die KW ermittlen DateTime vorTag = DateTime.Now.AddDays(-1); //KW ermitteln int KW = NumberOfWeek(vorTag); //Hier den Dateipfad ggf. ändern string path = @"C:\Program Files (x86)\FlowHeater\Transfer\NDC\"; // Zugriff auf den Textfile Adapter der Write Seite TextFileAdapter adapter = (TextFileAdapter)AdaptersWrite[0]; // Dateiname ändern, ggf. hier Anpassungen vornehmen! adapter.Filename = path + "FI" + vorTag.ToString("yy") + "KW" + KW + ".txt"; } // Eingangsparameter für die weitere Verarbeitung wieder zurückliefern return InValues[0].GetValue(); } private int NumberOfWeek(DateTime dte) { CultureInfo currentCulture = CultureInfo.CurrentCulture; Calendar calendar = currentCulture.Calendar; int calendarWeek = calendar.GetWeekOfYear(dte, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); if (calendarWeek > 52) { dte = dte.AddDays(7); int testCalendarWeek = calendar.GetWeekOfYear(dte, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek); if (testCalendarWeek == 2) calendarWeek = 1; } return calendarWeek; }

Mit freundlichen Grüßen

Andreas Knobloch

Mit freundlichen Grüßen
Andreas Knobloch

Bitte Anmelden um der Konversation beizutreten.

Ladezeit der Seite: 0.274 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.