java中的vm自变量_关于java:如何在vm文件中选择$ date的格式?

我有一个$ date定义为"星期几,月日,年",例如:2013年2月26日,星期二

我不知道$ date的定义位置,但是我想将小时添加到$ date变量中,或者用小时创建一个变量,您知道如何将其放入.vm文件吗?

Velocity提供了DateTool类来格式化日期。 您需要将此类的实例放入您的速度上下文中:

context.add("date", new DateTool());

然后,您可以使用如下格式命令:

$date.format('EEE, MMM d, yyyy at ha', $myDate)

得到类似Tuesday, February 26, 2013 at 11AM的东西

我可以把那行放在.vm文件上,这样我会得到小时格式,就像我想要的吗?

不幸的是,我已经指出了这一点,而只是显示" EEE,MMM d,yyyy在ha"而不是值本身,您知道可能是什么吗?

如果是这种情况,则DateTool不在您的VelocityContext中。 在Java文件中像这样编辑您的力度上下文:context.add("date", new DateTool());

不需要其他依赖项或代码修改的替代解决方案:

#set( $String = '' )##

$String.format('%1$tY%1$tm%1$td%1$tH%1$tM%1$tS', $date)

结合其他两个答案。

不知道发生了什么变化,但是此技巧不适用于使用Velocity的Maven原型插件。 我可以在String实例上调用非静态方法,但不能在format上调用。

@AleksandrKravets可能是Gus的答案:stackoverflow.com/questions/2329191/对此进行了解释。

从文档中:

Symbol   Meaning                 Presentation        Example

------   -------                 ------------        -------

G        era designator          (Text)              AD

y        year                    (Number)            1996

M        month in year           (Text & Number)     July & 07

d        day in month            (Number)            10

h        hour in am/pm (1~12)    (Number)            12

H        hour in day (0~23)      (Number)            0

m        minute in hour          (Number)            30

s        second in minute        (Number)            55

S        millisecond             (Number)            978

E        day in week             (Text)              Tuesday

D        day in year             (Number)            189

F        day of week in month    (Number)            2 (2nd Wed in July)

w        week in year            (Number)            27

W        week in month           (Number)            2

a        am/pm marker            (Text)              PM

k        hour in day (1~24)      (Number)            24

K        hour in am/pm (0~11)    (Number)            0

z        time zone               (Text)              Pacific Standard Time

'        escape for text         (Delimiter)

''       single quote            (Literal)           '

Examples:"E, MMMM d" will result in"Tue, July 24"

"EEE, M-d (H:m)" will result in"Tuesday, 7-24 (14:12)"

希望能有所帮助

支持的Java类之一必须将其放入Context中。 如果要更改日期格式,可以在该类中进行设置。

另一种选择是将原始Date对象放入上下文中,然后调用Velocity模板中的方法对其进行格式化。 如果需要,您也可以将Apache Commons DateUtils或其他帮助程序类传递给模板(请参见此答案)。

不能在.vm模板文件上放一些东西来满足我的需要?

$date是什么类型? 如果不确定,请在您的.vm中放入$date.getClass()。 如果它是一个字符串,则为否,则必须在Java端进行格式化。 如果它是一个日期,则可以,您可以调用.vm中的方法对其进行格式化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值