iReport: как отформатировать дату на основе французского языка

У меня проблема с форматированием даты в iReport

На моем компьютере я настроил язык локали как французский, но когда iReport создает отчеты, я нахожу дату, отформатированную с локалью английский.

Вот несколько кодов из моего файла jrxml:

<band height="41" splitType="Stretch">
    <textField pattern="dd/MM/yyyy h.mm a">
        <reportElement uuid="fb711e77-c949-4a99-9b52-109aae00c8ed" x="87" y="19" width="100" height="20"/>
        <textElement/>
        <textFieldExpression><![CDATA[$P{datenow}]]></textFieldExpression>
    </textField>
    <staticText>
        <reportElement uuid="51fb76a0-829e-4c36-b474-3ff9c7d4c239" x="41" y="19" width="48" height="20"/>
        <textElement>
            <font isBold="true" isItalic="true"/>
        </textElement>
        <text><![CDATA[Fes Le : ]]></text>
    </staticText>
</band>

и вот как это отображается у меня: Fri Sep 28 09:59:00

Мой целевой формат: vendredi 28 septembre 2012 09:59 (на французском)

Есть ли у вас какие-либо идеи?


person simonTifo    schedule 28.09.2012    source источник
comment
Вы можете посмотреть мои ответы на Как изменить формат даты (название месяца) в iReport? и Настройка REPORT_LOCALE в IReport? сообщения, связанные с вашим вопросом   -  person Alex K    schedule 28.09.2012


Ответы (1)


Ваш вопрос дублирует Как изменить формат даты (название месяца) в iReport? и Настройка REPORT_LOCALE в сообщениях IReport?.


  • Для установки локали в iReport необходимо вызвать диалог Параметры - Компиляция и выполнение (через iReport -> Инструменты -> меню Параметры).

Диалоговое окно для настройки языка

Для этого textField:

<textField pattern="EEEEE dd MMMMM yyyy">
    <reportElement x="0" y="0" width="100" height="20"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
</textField>

Результат будет:

Результат предварительного просмотра в iReport

Примечание. Это работает только для предварительного просмотра в iReport.

Map<String, Object> params = new HashMap<String, Object>(); 
params.put(JRParameter.REPORT_LOCALE, Locale.FRENCH); 
JasperFillManager.fillReportToFile(compiledReportName, params); 

Результат будет таким же для отчета, сгенерированного с помощью такого кода.


Рабочий образец, файл jrxml:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ...  whenNoDataType="AllSectionsNoDetail" ...>
    <parameter name="date" class="java.util.Date" isForPrompting="false">
        <defaultValueExpression><![CDATA[new Date()]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="50">
            <textField pattern="EEEEE dd MMMMM yyyy">
                <reportElement x="200" y="11" width="228" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$P{date}]]></textFieldExpression>
            </textField>
        </band>
    </title>
</jasperReport>

Java-код:

Map<String, Object> params = new HashMap<String, Object>();
params.put("date", new Date());
params.put(JRParameter.REPORT_LOCALE, Locale.FRENCH);

JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);

JasperExportManager.exportReportToPdfFile(jasperPrint, outputFile);

Результат будет:

Сгенерированный отчет в Adobe Reader

person Alex K    schedule 28.09.2012
comment
Я тестировал двумя способами, но всегда получал один и тот же результат: Пт, 28 сентября, 11:29:37 - person simonTifo; 28.09.2012
comment
теперь работает, большое спасибо, проблема была : вместо : <parameter name="datenow" class="java.util.Date"/> у меня было : <parameter name="datenow" class="java.lang.String"/> - person simonTifo; 28.09.2012
comment
@Alex K, работает с датой, но не с числом. можете вы помочь мне? Например, мой источник данных - csv, и у меня есть значение 85,6 в CSV, теперь я хочу использовать его как немецкий способ 85,6, но всякий раз, когда я применяю эту конфигурацию, она не работает. (это дает 8560,0). Я также пробовал ds.setNumberFormat и ds.setLocale(Locale.German). (когда я удаляю параметр ds.setLocal и REPORT_LOCALE, он показывает 85,6) - person Parth Patel; 14.07.2020