如何为VelocityTools DateTool设置TimeZone?

dbr*_*aux 3 velocity

无论是VelocityTools工具使用情况摘要,并在DateTool的Javadoc似乎表明用于设置时区的配置机制,但我根本无法发现那是什么.

DateTool的timezone setter是protected,我不想重复将TimeZone传递给重载format()方法.

(VelocityTools 2.0)

Cla*_*son 7

要将配置值传递给标准工具,必须在WEB-INF/tools.xml文件中明确列出它们:

<?xml version="1.0"?>
<tools>
  <toolbox scope="application">
    <tool key="date"
          class="org.apache.velocity.tools.generic.DateTool"
          timezone="GMT+7"/>
    ...
  </toolbox>
  ...
</tools>
Run Code Online (Sandbox Code Playgroud)

请注意,您可以使用org.apache.velocity.tools.generic.ComparisonDateTool用于相同目的,这会添加一些不错的日期时间比较功能.

如果您不依赖于VelocityView工具加载机制,那么这意味着您将自己的工具放在Velocity上下文中.如果是,则配置值将手动提供给工具configure(Map).例如:

Map<String,String> config = new HashMap<>();
config.put(DateTool.TIMEZONE_KEY,"GMT+7");

DateTool date = new DateTool();
date.configure(config);

VelocityContext context = new VelocityContext();
context.put("date", date);
Run Code Online (Sandbox Code Playgroud)