Персидский календарь в отчёте

19.05.2021

А вы знали, что разные страны имеют разные форматы дат? Когда вы делаете многоязычный отчёт, или же отчёт для страны, где говорят на персидском (фарси) - важно указывать даты в правильном формате. По умолчанию FastReport использует европейский формат дат, но средства .NET позволяют конвертировать его в другие форматы.

Итак, у нас есть задача конвертировать дату в персидский формат. К примеру, у нас в отчёте есть выражение [Date], выводящее сегодняшнюю дату:

[Date]

Выражение [Date] получает текущую системную дату в формате DateTime, но значение текстового отчёта после всех обработок - строковое, т.е String. Создадим новую функцию в скрипте отчёта:

private void ConvertToPersianDate(object sender, EventArgs e)

Мы будем вызывать эту функцию из текстовых объектов. Создадим временную переменную, которая будет конвертировать текст объекта в DateTime:

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

“sender as TextObject” - обращение к объекту, который вызвал функцию. Мы можем использовать функции и свойства объекта, если обращаемся к нему таким образом.

После этого нам понадобится объект PersianCalendar, который будет конвертировать нашу дату в персидский формат:

PersianCalendar pc = new PersianCalendar();

Заметьте, что этот объект содержится в библиотеке System.Globalization, и её нужно указать в секции using.

После этого нам необходимо изменить сам текст объекта. Рассмотрим эту строку поподробнее:

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

Здесь мы задаём текст нашего объекта. Само значение будет в формате год/месяц/день, так как мы используем функции PersianCalendar, получающие соответствующие значения. Участок кода, где задаётся текст, можно редактировать по желанию. Например, так выглядит код для даты в формате день.месяц.год:

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

Итак, в итоге у нас получилась такая функция:

using System.Globalization;
namespace FastReport
{
 public class ReportScript
 {
 private void ConvertToPersianDate(object sender, EventArgs e)
 {
 // Конвертация в формат DateTime
 DateTime d = DateTime.Parse((sender as TextObject).Text);
 
 // Создание объекта для конвертации
 PersianCalendar pc = new PersianCalendar();
 
 // Создание строки, используя PersianCalendar
 // Возможно изменить шаблон строки
 (sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d));
 }
 }
}

Добавим функцию к событию AfterData необходимого объекта.

AfterData

И теперь дата выглядит таким образом:

Итоговый результат

Для того, чтобы использовать другие функции, связанные со временем, вы можете консультироваться со следующей таблицей:

 GetDayOfWeek(),  День недели
 GetMonth(),  Месяц
 GetDayOfMonth(),  День месяца
 GetYear(),  Год
 GetHour()  Час
 GetMinute()  Минута
 GetSecond()  Секунда

Теперь вы знаете как менять вид даты в своём отчёте. Эта статья может помочь в изменении под вид (год, месяц, день). Он используется в Японии, Китае, Северной Корее, Южной Корее, на Тайване, в Венгрии, Литве и Иране, а также он считается второстепенным в некоторых странах Европы и Азии. 

.NET FastReport .NET FastReport
16 октября 2026

Новые возможности .NET 11: обзор C# 15, EF Core 11, ASP.NET Core и производительности

Обзор .NET 11: C# 15, union-типы, новая модель безопасности памяти, Windows Forms, EF Core 11, ASP.NET Core и Blazor, ускорение Runtime и NativeAOT.
12 октября 2026

Как экспортировать отчёт из FastReport .NET в доступный PDF (PDF/UA-1)

Как экспортировать отчёт из FastReport .NET в доступный PDF/UA-1: настройка через интерфейс и код на C#, роли SemanticRole, AltText и проверка валидаторами.
12 октября 2026

GS1 DataBar Expanded Stacked: особенности и настройка в FastReport .NET

GS1 DataBar Expanded Stacked — многострочный штрихкод для товаров: кодирует GTIN, срок годности, вес, номер партии. Узнайте, как работает символика и настройка Segments в FastReport .NET.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»