Дата формата в Строковом Шаблонном электронном письме

Я создаю электронное письмо с помощью Строкового Шаблона, но когда я распечатываю дату, он распечатывает полную дату (например, среда 28 апреля 10:51:37 BST 2010). Я хотел бы распечатать его в формате dd/mm/yyyy, но не знаю, как отформатировать это в .st файле.

Я не могу изменить дату индивидуально (использующий simpleDateFormatter Java), потому что я выполняю итерации по набору объектов с датами.

Существует ли способ отформатировать дату в .st почтовом шаблоне?

7
задан Ger 28 April 2010 в 10:30
поделиться

3 ответа

Используйте дополнительные средства визуализации, например:

internal class AdvancedDateTimeRenderer : IAttributeRenderer
{
    public string ToString(object o)
    {
        return ToString(o, null);
    }

    public string ToString(object o, string formatName)
    {
        if (o == null)
            return null;

        if (string.IsNullOrEmpty(formatName))
            return o.ToString();

        DateTime dt = Convert.ToDateTime(o);

        return string.Format("{0:" + formatName + "}", dt);
    }
}

, а затем добавьте это в свой StringTemplate, например:

var stg = new StringTemplateGroup("Templates", path);
stg.RegisterAttributeRenderer(typeof(DateTime), new AdvancedDateTimeRenderer());

, затем в st файле:

$YourDateVariable; format="dd/mm/yyyy"$

он должен работать

8
ответ дан 6 December 2019 в 23:02
поделиться

Один очень важный факт при установке формата даты - использовать «ММ» вместо «мм» для месяца. «мм» означает минуты. Использование «мм» вместо «ММ» очень часто приводит к ошибкам, которые трудно найти.

0
ответ дан 6 December 2019 в 23:02
поделиться

Вот базовый пример Java, см. документацию StringTemplate по рендерингу объектов для получения дополнительной информации.

StringTemplate st = new StringTemplate("now = $now$");
st.setAttribute("now", new Date());
st.registerRenderer(Date.class, new AttributeRenderer(){
    public String toString(Object date) {
        SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");
        return f.format((Date) date);
    }
});
st.toString();
2
ответ дан 6 December 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: