Der Daten Import / Export Spezialist
Schauen Sie sich auch die verfügbaren allgemeinen Beispiele an evtl. kann Ihre Frage hiermit schon beantwortet werden: Hello World 1 / 2 / 3 , Zahlen in Zeichenketten formatieren , Einfache Wenn-Dann-Sonst Bedingung , Komplexe If-Then-ElseIf ... Bedingung , Daten filtern und gruppieren , Daten gruppieren und Werte über die Gruppierung summieren

Kalenderwoche für Dateiname ermitteln

  • Andreas Knobloch
  • Autor
  • Offline
  • Junior Mitglied
  • Junior Mitglied
Mehr
8 Jahre 8 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:
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 oder Registrieren um der Konversation beizutreten.

Mehr
8 Jahre 8 Monate her - 8 Jahre 8 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: 8 Jahre 8 Monate her von FlowHeater-Team.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Andreas Knobloch
  • Autor
  • Offline
  • Junior Mitglied
  • Junior Mitglied
Mehr
8 Jahre 8 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 oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.368 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en