java - 在字符串模板电子邮件中格式化日期

我正在使用字符串模板创建电子邮件,但是当我打印出日期时,它会打印出完整的日期(例如,2010 年 4 月 28 日星期三 10:51:37 BST)。我想以 dd/mm/yyyy 格式打印出来,但不知道如何在 .st 文件中格式化。

我无法单独修改日期(使用 java 的 simpleDateFormatter),因为我遍历了带有日期的对象集合。

有没有办法格式化 .st 电子邮件模板中的日期?

最佳答案

像这样使用额外的渲染器:

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"$

它应该可以工作

https://stackoverflow.com/questions/2728623/

相关文章:

forms - 如何在 Laravel 中处理日期输入

Python 浮点格式 - 类似于 "g",但数字更多

ios - iPhone : How to get number from string with

formatting - JSON.Net 将 XML 序列化为 JSON 驼峰式案例

vim - 使用 Vim,是否有更有效的方法来根据这个最佳实践来格式化 LaTeX 段落?

formatting - 如何在我的博客文章中使用 stackoverflow 样式标记?

xml - 如何使用 gVim 格式化未格式化的 XML 文档?

c# - 使用 String.Format 时,如果字符串值不为 null 或为空,是否有一种简单的

formatting - Gnuplot 平滑置信区间线而不是误差线

c# - DataGridViewCheckBoxColumn : FormatException