我已定义为$日期“一周中的一天,月日,年”前:周二,2013年2月26日,
我不知道$日期的定义,但我喜欢的时刻加入到这$ date变量,或者用小时创建一个变量,你知道我怎样才能把它放在.vm文件中?
我已定义为$日期“一周中的一天,月日,年”前:周二,2013年2月26日,
我不知道$日期的定义,但我喜欢的时刻加入到这$ date变量,或者用小时创建一个变量,你知道我怎样才能把它放在.vm文件中?
Velocity provides a DateTool class用于格式化日期。你需要把这个类的一个实例到你的速度方面:
context.add("date", new DateTool());
那么你可以使用一个格式化的命令,如:
$date.format('EEE, MMM d, yyyy at ha', $myDate)
要达到这样的Tuesday, February 26, 2013 at 11AM
之一支持Java类必须将其放入Context。如果您想以不同的方式格式化日期,则可以在该课程中完成。
另一种选择是将原始Date对象放入上下文中,然后调用Velocity模板中的方法对其进行格式化。如果需要,您可以将Apache Commons DateUtils或其他辅助类也传递给模板(请参阅this answer)。
我不能在.vm模板文件中添加任何东西, – 2013-02-26 17:30:11
'$ date'的类型是什么?如果不确定,请在您的.vm中放置'$ date.getClass()'。如果它是一个字符串,那么不,你必须在Java端进行格式化。如果它是一个日期,那么是的,你可以调用.vm中的方法来格式化它。 – 2013-02-26 18:16:52
,不需要额外的依赖性或代码修改替代解决方案:
#set($String = '')##
$String.format('%1$tY%1$tm%1$td%1$tH%1$tM%1$tS', $date)
不知道发生了什么变化,但是这个技巧不适用于使用Velocity的maven原型插件。我可以在String实例上调用非静态方法,但不能调用'format'。 – 2017-04-25 11:03:32
@AleksandrKravets可能是Gus在这里的答案:https://stackoverflow.com/questions/2329191/calling-class-methods-static-from-inside-a-velocity-view-page/15126547#15126547解释了这一点。 – hcg 2018-02-28 14:05:38
从文档:
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)"
希望帮助
我可以把.vm文件,该行与我去拿小时格式化像我想要的吗? – 2013-02-26 17:18:21
不幸的是,我已经说了,它只是显示“EEE,MMM d,yyyy at ha”而不是值本身,你知道可能是什么吗? – 2013-02-26 17:29:38
如果是这种情况,那么DateTool不在你的VelocityContext中。在你的java文件中编辑你的速度上下文,如下所示:'context.add(“date”,new DateTool());' – 2013-02-26 17:31:33