-
Notifications
You must be signed in to change notification settings - Fork 0
/
ref_builtins_date.html
463 lines (316 loc) · 25.3 KB
/
ref_builtins_date.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
<!doctype html>
<html lang="en" class="page-type-section">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>日期内建函数 - FreeMarker 手册</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta property="og:site_name" content="FreeMarker 手册">
<meta property="og:title" content="日期内建函数">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_date.html">
<link rel="canoical" href="http://freemarker.org/docs/ref_builtins_date.html">
<link rel="icon" href="favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css">
</head>
<body itemscope itemtype="https://schema.org/Code">
<meta itemprop="url" content="http://freemarker.org/docs/">
<meta itemprop="name" content="FreeMarker 手册">
<!--[if lte IE 9]>
<div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
<![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner"> <img itemprop="image" src="logo.png" alt="FreeMarker">
</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="http://freemarker.org/docs/api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://sourceforge.net/p/freemarker/bugs/new/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="toc.html" class="navigation-header">Manual</a><div class="navigation-header"></div></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="toc.html"><span itemprop="name">FreeMarker 手册</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">模板语言参考 </span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">内建函数参考</span></a></li><li class="step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_date.html"><span itemprop="name">日期内建函数</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div> <div class="main-content site-width">
<div class="content-wrapper">
<div id="table-of-contents-wrapper" class="col-left">
<script>var breadcrumb = ["FreeMarker 手册","模板语言参考 ","内建函数参考","日期内建函数"];</script>
<script src="toc.js"></script>
<script src="docgen-resources/main.min.js"></script>
</div>
<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_number.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_boolean.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-section1" id="ref_builtins_date" itemprop="headline">日期内建函数</h1>
</div></div><div class="page-menu">
<div class="page-menu-title">Page Contents</div>
<ul><li><a class="page-menu-link" href="#ref_builtin_date_datetype" data-menu-target="ref_builtin_date_datetype">date, time, datetime (当用于日期/时间/日期-时间值时)</a></li><li><a class="page-menu-link" href="#ref_builtin_date_if_unknown" data-menu-target="ref_builtin_date_if_unknown">date_if_unknown, time_if_unknown, datetime_if_unknown</a></li><li><a class="page-menu-link" href="#ref_builtin_date_iso" data-menu-target="ref_builtin_date_iso">iso_...</a></li><li><a class="page-menu-link" href="#ref_builtin_string_for_date" data-menu-target="ref_builtin_string_for_date">string (当用于日期/时间/日期-时间值时)</a></li></ul> </div>
<h2 class="content-header header-section2" id="ref_builtin_date_datetype">date, time, datetime (当用于日期/时间/日期-时间值时)</h2>
<p>这些内建函数用来指定日期变量中的哪些部分被使用:</p>
<ul>
<li>
<p><code class="inline-code">date</code>:仅日期部分,没有一天当中的时间部分。</p>
</li>
<li>
<p><code class="inline-code">time</code>:仅一天当中的时间部分,没有日期部分。</p>
</li>
<li>
<p><code class="inline-code">datetime</code>:日期和时间都在</p>
</li>
</ul>
<p>在最佳情况下,你不需要使用这些内建函数。不幸的是,
由于Java平台上的技术限制,FreeMarker 有时不能发现日期中的哪一部分在使用;
询问程序员哪些变量会有这个问题。如果 FreeMarker 不得不执行需要这些信息的操作
--比如用文本显示日期--但是它不知道哪一部分在使用,它会以错误来中止运行。
这就是你不得不使用这些内建函数的时候了。比如,假设
<code class="inline-code">openingTime</code> 是一个有这样问题的变量:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign x = openingTime> <#-- no problem can occur here -->
${openingTime?time} <#-- without ?time it would fail -->
<#-- For the sake of better understanding, consider this: -->
<#assign openingTime = openingTime?time>
${openingTime} <#-- this will work now --></pre></div>
<p>这些内建函数也可以用来将日期-时间值转换成日期或时间。例如:</p>
<div class="code-wrapper"><pre class="code-block code-template">Last updated: ${lastUpdated} <#-- assume that lastUpdated is a date-time value -->
Last updated date: ${lastUpdated?date}
Last updated time: ${lastUpdated?time}</pre></div>
<p>将会输出:</p>
<div class="code-wrapper"><pre class="code-block code-output">Last updated: 04/25/2003 08:00:54 PM
Last updated date: 04/25/2003
Last updated time: 08:00:54 PM</pre></div>
<p>如果 <code class="inline-code">?</code> 左边是字符串,那么这些内建函数
<a href="ref_builtins_string.html#ref_builtin_string_date">将字符串转换成日期/时间/日期时间</a>。</p>
<h2 class="content-header header-section2" id="ref_builtin_date_if_unknown">date_if_unknown, time_if_unknown, datetime_if_unknown</h2>
<div class="callout note">
<strong class="callout-label">Note:</strong>
<p>该内建函数从 FreeMarker 2.3.21 版本开始存在</p>
</div>
<p><code class="inline-code">date_if_unknown</code>,
<code class="inline-code">time_if_unknown</code>,
<code class="inline-code">datetime_if_unknown</code>
内建函数使用一些子类型来标记日期类型的值:日期没有时间,时间,或日期-时间。
如果变量值已经持有这些信息,那么内建函数就不会起作用。也就是说,
它不会转换变量值的子类型,如果它是未知的,则会添加子类型。</p>
<h2 class="content-header header-section2" id="ref_builtin_date_iso">iso_...</h2>
<div class="callout note">
<strong class="callout-label">Note:</strong>
<p><em>这些内建函数从 FreeMarker 2.3.21 版本开始废弃</em>,
因为 <code class="inline-code">date_format</code>,<code class="inline-code">time_format</code> 和
<code class="inline-code">datetime_format</code> 设置理解
<code class="inline-code">"iso"</code> (ISO 8601:2004 格式) 和
<code class="inline-code">"xs"</code> (XML Schema 格式),此外还有
Java <code class="inline-code">SimpleDateFormat</code> 格式。因此默认格式可以设置为ISO 8601,
要使用一次ISO格式,可以使用 <code class="inline-code">myDate?string.iso</code>。 <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">更多内容请参考...</a></p>
</div>
<p>这些内建函数转换日期,时间或日期-时间值为字符串,遵循 ISO 8601:2004 "扩展" 格式。</p>
<p>该内建函数有很多表现形式:
<code class="inline-code">iso_utc</code>, <code class="inline-code">iso_local</code>,
<code class="inline-code">iso_utc_nz</code>, <code class="inline-code">iso_local_nz</code>,
<code class="inline-code">iso_utc_m</code>, <code class="inline-code">iso_utc_m_nz</code>,等。
名称的构成由下列单词顺序组成,每部分由一个 <code class="inline-code">_</code> 分隔开:</p>
<div class="orderedlist"><ol type="1">
<li>
<p><code class="inline-code">iso</code> (必须的)</p>
</li>
<li>
<p>是 <code class="inline-code">utc</code> 或 <code class="inline-code">local</code> 二者之一
(必须的(除了给定一个参数,这个后面再来说)):
来指定根据UTC或根据当前时区来打印日期/时间/日期-时间。
当前时区是根据 FreeMarker 的设置项 <code class="inline-code">time_zone</code>
来确定的,它通常是由程序员在模板外配置的(当然它也可以在模板内设置,
比如使用<code class="inline-code"><#setting time_zone="America/New_York"></code>)。
请注意,如果 FreeMarker 设置项 <code class="inline-code">sql_date_and_time_time_zone</code>
已经设置并且非 <code class="inline-code">null</code>,那么对于 <code class="inline-code">java.sql.Date</code>
和 <code class="inline-code">java.sql.Time</code> 值(也就是通过SQL从数据中获得的仅日期值和仅时间值)
<code class="inline-code">local</code> 的时区值将会替代 <code class="inline-code">time_zone</code> 设置的值。</p>
</li>
<li>
<p><code class="inline-code">h</code>,<code class="inline-code">m</code> 或
<code class="inline-code">ms</code>(可选的):时间部分的精度。
当忽略的时候,就默认设置到秒的精度(比如<code class="inline-code">12:30:18</code>)。
<code class="inline-code">h</code> 表示小时的精度(比如 <code class="inline-code">12</code>),
<code class="inline-code">m</code> 表示分钟的精度(比如 <code class="inline-code">12:30</code>),
<code class="inline-code">ms</code> 就表示毫秒的精度(<code class="inline-code">12:30:18.25</code>,这里表示250毫秒)。
要注意当使用 <code class="inline-code">ms</code> 时,毫秒会显示为百分制的形式
(遵循标准)而且不会去尾到 <code class="inline-code">0</code> 秒。因此,
如果毫秒的部分变成 <code class="inline-code">0</code> 的话,整个的毫秒的部分就会被忽略掉了。
同时也要注意毫秒的部分是由一个点来分隔的,而不是逗号
(遵循Web约定和XML Schema的日期/时间格式)。</p>
</li>
<li>
<p><code class="inline-code">nz</code> (可选的): <code class="inline-code">nz</code>
(比如在 <code class="inline-code">${foo?utc_local_nz}</code> 中) 代表
"没有时区",也就意味着时区的偏移量
(比如 <code class="inline-code">+02:00</code> 或者 <code class="inline-code">-04:30</code>
或者 <code class="inline-code">Z</code>)不会显示出来。如果这部分被忽略了
(比如在 <code class="inline-code">${foo?utc_local}</code> 中) 那么时区就会显示出来,
除了两种情况:</p>
<ul>
<li>
<p>如果值是日期(没有时间部分)值(再说一次,ISO 8901 标准不允许)</p>
</li>
<li>
<p>如果值是 <code class="inline-code">java.sql.Time</code> 而且 FreeMarker 配置设置项
<code class="inline-code">incompatible_improvements</code> (通常通过
Java代码 <code class="inline-code">Configuration</code> 的构造方法参数设置) 最小是2.3.21。
存储时间值是不分时区的,只是存储小时,分钟,秒和小数秒值,
所以显示时区就没什么意义。</p>
</li>
</ul>
<p>请注意,从 FreeMarker 2.3.19 版本开始,对于XML Schema
日期/时间/日期时间格式的兼容性,时区偏移量通常包含分钟。
(如果主要生成XML Schema格式,就使用 xs 格式。)</p>
</li>
</ol></div>
<p>例如:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign aDateTime = .now>
<#assign aDate = aDateTime?date>
<#assign aTime = aDateTime?time>
Basic formats:
${aDate?iso_utc}
${aTime?iso_utc}
${aDateTime?iso_utc}
Different accuracies:
${aTime?iso_utc_ms}
${aDateTime?iso_utc_m}
Local time zone:
${aDateTime?iso_local}</pre></div>
<p>可能的输出(基于当前时间和时区):</p>
<div class="code-wrapper"><pre class="code-block code-output">Basic formats:
2011-05-16
21:32:13Z
2011-05-16T21:32:13Z
Different accuracies:
21:32:13.868Z
2011-05-16T21:32Z
Local time zone:
2011-05-16T23:32:13+02:00</pre></div>
<p>还有另外一组 <code class="inline-code">iso_...</code> 内建函数形式,
你可从名称中以忽略掉 <code class="inline-code">local</code> 或 <code class="inline-code">utc</code>,
但是要指定时区作为内建函数的参数。例如:</p>
<div class="code-wrapper"><pre class="code-block code-template"><#assign aDateTime = .now>
${aDateTime?iso("UTC")}
${aDateTime?iso("GMT-02:30")}
${aDateTime?iso("Europe/Rome")}
The usual variations are supported:
${aDateTime?iso_m("GMT+02")}
${aDateTime?iso_m_nz("GMT+02")}
${aDateTime?iso_nz("GMT+02")}</pre></div>
<p>可能的输出(基于当前时间和时区):</p>
<div class="code-wrapper"><pre class="code-block code-output">2011-05-16T21:43:58Z
2011-05-16T19:13:58-02:30
2011-05-16T23:43:58+02:00
The usual variations are supported:
2011-05-16T23:43+02:00
2011-05-16T23:43
2011-05-16T23:43:58</pre></div>
<p>如果时区参数不能被解释,模板处理就会终止并发生错误。</p>
<p class="programmers-note">参数可以是
<code class="inline-code">java.util.TimeZone</code> 对象(可能是Java方法的返回值,
或者在数据模型中),而不能只是字符串。</p>
<h2 class="content-header header-section2" id="ref_builtin_string_for_date">string (当用于日期/时间/日期-时间值时)</h2>
<p>这个内建函数以指定的格式转换日期类型到字符串类型。</p>
<div class="callout note">
<strong class="callout-label">Note:</strong>
<p>应该很少使用这个内建函数,因为日期/时间/日期-时间值的默认格式可以全局指定
FreeMarker 的 <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">
<code>date_format</code>,<code>time_format</code> 和
<code>datetime_format</code> 设置</a>。
该内建函数只在期望格式和常用格式不同的地方使用。在其它地方,
默认格式应该由程序员在模板之外合理地设置。</p>
</div>
<p>期望的格式可以由
<code class="inline-code">?string.<em class="code-color">format</em></code> 或
<code class="inline-code">?string["<em class="code-color">format</em>"]</code>
(或历史上等同的,
<code class="inline-code">?string("<em class="code-color">format</em>")</code>)
来指定。这些都是等同的,除了使用引号格式的,它可以在
<code class="inline-code"><em class="code-color">format</em></code> 中包含任意字符,
比如空格。<code class="inline-code"><em class="code-color">format</em></code> 的语法和配置设置项
<code class="inline-code">date_format</code>,<code class="inline-code">time_format</code> 和
<code class="inline-code">datetime_format</code> 是一样的; <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">请参考这些可能值的文档</a>。</p>
<p>例如:如果输出的本地化设置是美国英语,时区是美国太平洋时区,并且
<code class="inline-code">openingTime</code> 是
<code class="inline-code">java.sql.Time</code>, <code class="inline-code">nextDiscountDay</code>
是 <code class="inline-code">java.sql.Date</code> 而
<code class="inline-code">lastUpdated</code> 是
<code class="inline-code">java.sql.Timestamp</code> 或
<code class="inline-code">java.util.Date</code> 那么:</p>
<div class="code-wrapper"><pre class="code-block code-template">${openingTime?string.short}
${openingTime?string.medium}
${openingTime?string.long}
${openingTime?string.full}
${openingTime?string.xs}
${openingTime?string.iso}
${nextDiscountDay?string.short}
${nextDiscountDay?string.medium}
${nextDiscountDay?string.long}
${nextDiscountDay?string.full}
${nextDiscountDay?string.xs}
${nextDiscountDay?string.iso}
${lastUpdated?string.short}
${lastUpdated?string.medium}
${lastUpdated?string.long}
${lastUpdated?string.full}
${lastUpdated?string.medium_short} <#-- medium date, short time -->
${lastUpdated?string.xs}
${lastUpdated?string.iso}
<#-- SimpleDateFormat patterns: -->
${lastUpdated?string["dd.MM.yyyy, HH:mm"]}
${lastUpdated?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}
${lastUpdated?string["EEE, MMM d, ''yy"]}
${lastUpdated?string.yyyy} <#-- Same as ${lastUpdated?string["yyyy"]} -->
<#-- Advanced ISO 8601-related formats: -->
${lastUpdated?string.iso_m_u}
${lastUpdated?string.xs_ms_nz}</pre></div>
<p>将会输出:</p>
<div class="code-wrapper"><pre class="code-block code-output">01:45 PM
01:45:09 PM
01:45:09 PM PST
01:45:09 PM PST
13:45:09-08:00
13:45:09-08:00
2/20/07
Apr 20, 2007
April 20, 2007
Friday, April 20, 2007
2007-02-20-08:00
2007-02-20
2/20/07 01:45 PM
Feb 20, 2007 01:45:09 PM
February 20, 2007 01:45:09 PM PST
Friday, February 20, 2007 01:45:09 PM PST
Feb 8, 2003 9:24 PM
2007-02-20T13:45:09-08:00
2007-02-20T13:45:09-08:00
08.04.2003 21:24
Tuesday, April 08, 2003, 09:24 PM (PDT)
Tue, Apr 8, '03
2003
2007-02-20T21:45Z
2007-02-20T13:45:09.000</pre></div>
<div class="callout warning">
<strong class="callout-label">Warning!</strong>
<p>不幸的是,由于Java平台的限制,在数据模型中可以有日期变量,
那里 FreeMarker 不能决定变量是否是日期(年,月,日),还是时间
(时,分,秒,毫秒),或者是日期-时间值。这种情况下,当你编写如
<code class="inline-code">${lastUpdated?string.short}</code> 或
<code class="inline-code">${lastUpdated?string.xs}</code> 时,FreeMarker
不知道如何来显示日期,也就是说,格式不指定精确的字段去显示,
或者如果只是简单使用 <code class="inline-code">${lastUpdated}</code>,
那么模板会中止执行并抛出错误。要阻止这些发生,可以使用 <a href="#ref_builtin_date_datetype"><code>?date</code>,
<code>?time</code> 和 <code>?datetime</code>
内建函数</a> 来帮助 FreeMarker。例如:
<code class="inline-code">${lastUpdated?datetime?string.short}</code>。
要询问程序员数据模型中确定的变量是否有这个问题,
或通常使用内建函数 <code class="inline-code">?date</code>,<code class="inline-code">?time</code>
和 <code class="inline-code">?datetime</code> 来安全处理。</p>
</div>
<div class="callout note">
<strong class="callout-label">Note:</strong>
<p>不需和格式模式使用 <code class="inline-code">?date</code>,
<code class="inline-code">?time</code> 或 <code class="inline-code">?datetime</code>,
比如 <code class="inline-code">"yyyy.MM.dd HH:mm"</code>,因为使用这些模式,
就告诉 FreeMarker 来显示哪部分日期。那么,FreeMarker 将盲目地相信你,
如果你显示的部分不存在于变量中,则可以显示"干扰"。例如,
<code class="inline-code">${openingTime?string["yyyy-MM-dd hh:mm:ss a"]}</code>,
而 <code class="inline-code">openingTime</code> 中只存储了时间,将会显示
<code class="inline-code">1970-01-01 09:24:44 PM</code>。</p>
</div>
<p>要避免误解,需要的格式不是字符串,它可以是变量或任意表达式,比如
<code class="inline-code">"<em class="code-color">...</em>"?string[myFormat]</code>。</p>
<p>请参考: <a href="dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date">日期的插入</a></p>
<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_number.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_boolean.html"><span>Next</span></a></div></div></div></div> </div>
</div>
<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/index.html">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href="https://github.com/nanlei/freemarker/tree/manual-zh-2.3-gae/src/manual">Chinese Manual on Github</a></li><li><a href="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://sourceforge.net/p/freemarker/bugs/new/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"><p><span class="generated-for-product">Generated for: Freemarker 2.3.23</span><span class="last-updated"> Last generated:
<time itemprop="dateModified" datetime="2015-09-18T14:38:51Z" title="Friday, September 18, 2015 2:38:51 PM GMT">2015-09-18 14:38:51 GMT</time></span></p> <p class="copyright">
© <span itemprop="copyrightYear">1999</span>–2015
<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://freemarker.org">The FreeMarker Project</a>. All rights reserved. </p>
</div></div></div></body>
</html>