Persischer Kalender im Bericht

Haben Sie gewusst, dass verschiede Länder unterschiedliche Datumformate haben? Wenn Sie einen mehrsprachigen Bericht bzw. einen Bericht für das Land, in dem Persisch (Farsi) gesprochen wird, erstellen, ist es wichtig, die Daten im richtigen Format anzugeben. Als Standard-Einstellung wird im FastReport das europäische Datenformat eingesetzt, aber die .NET-Mittel ermöglichen es in andere Formate umzuwandeln.

Wir haben also die Aufgabe das Datum ins persische Format umzuwandeln. Wir haben zum Beispiel im Bericht einen Ausdruck [Date], der das heutige Datum ausgibt:

[Date]

Der [Date] Ausdruck erhält das aktuelle Systemdatum im DateTime Format, aber der Wert des Textberichtes ist nach allen Verarbeitungen ein Zeichenkettenwert, d.h String. Erstellen wir eine neue Funktion im Bericht-Skript:

private void ConvertToPersianDate(object sender, EventArgs e)

Wir werden diese Funktion aus den Textobjekten aufrufen. Erstellen wir eine Zeitvariable, die den Objekttext ins DateTime umwandelt:

DateTime d = DateTime.Parse((sender as TextObject).Text);

“sender as TextObject” ist die Anfrage zu dem Objekt, das die Funktion aufgerufen hat. Wir können die Funktionen und Eigenschaften des Objekts nutzen, wenn wir es so aufrufen.

Danach benötigen wir ein PersianCalendar-Objekt, das unser Datum in das persische Format umwandelt:

PersianCalendar pc = new PersianCalendar();

Bemerken Sie, dass dieses Objekt in der System.Globalization Bibliothek enthalten ist und sie im Abschnitt using anzugeben ist.

Danach müssen wir den Objekttext selbst ändern. Schauen wir uns diese Zeile genauer an:

(sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d));

Hier geben wir den Text unseres Objektes vor. Der Wert selbst ist im Format Jahr/Monat/Tag, da wir die Funktion PersianCalendar verwenden, die die entsprechenden Werte abruft. Der Codeabschnitt, in dem der Text angegeben wird, kann nach dem Wunsch bearbeitet werden. Beispielsweise sieht der Code für das Datum im Format Tag.Monat.Jahr wie folgt aus:

"{0}.{1}.{2}", pc.GetDayOfMonth(d), pc.GetMonth(d), pc.GetYear(d)

Wir haben also letztendlich die folgende Funktion erhalten:

using System.Globalization;
namespace FastReport
{
 public class ReportScript
 {
 private void ConvertToPersianDate(object sender, EventArgs e)
 {
 // Umwandlung im Format DateTime
 DateTime d = DateTime.Parse((sender as TextObject).Text);
 
 // Objekterstellung für die Umwandlung 
 PersianCalendar pc = new PersianCalendar();
 
 // Erstellen einer Zeile mit PersianCalendar
 // Evtl. kann der Zeilenbaustein geändert werden 
 (sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d));
 }
 }
}

Fügen wir die Funktion zum AfterData-Ereignis des gewünschten Objekts hinzu.

AfterData

Und so sieht das Datum nun aus:

Das Endergebnis

Um die anderen zeitbezogenen Funktionen zu nutzen, können Sie die Daten der Tabelle entnehmen:

 GetDayOfWeek(),  Wochentag
 GetMonth(),  Monat
 GetDayOfMonth(),  Monatstag
 GetYear(),  Jahr
 GetHour()  Stunde
 GetMinute()  Minute
 GetSecond()  Sekunde

Jetzt wissen Sie, wie Sie die Datumsansicht in Ihrem Bericht ändern können. Dieser Artikel kann bei der Änderung der Ansicht helfen (Jahr, Monat, Tag). Es wird in Japan, China, Nordkorea, Südkorea, Taiwan, Ungarn, Litauen und Iran verwendet und gilt in einigen europäischen und asiatischen Ländern als sekundär. 

Fast Reports
  • 800-985-8986 (Englisch, die USA)
  • +4930568373928 (Deutsch)
  • +55 19 98147-8148 (Portugiesisch)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314

© 1998-2024 Fast Reports Inc.
Trustpilot