今天在做FreeMark,界面时间格式需要简单处理下。看下了下FreeMark的一些处理方式,觉得是我目前用过是时间格式中最方面的一种。整理列在下面string(当和一个日期值一起使用)
这个内置标签用指定的格式把日期转换成字符串,(把默认的格式用FreeMarker的ate_format,time_format和datetime_format设置指定对你有好处,那样的话你就不需要这个标签了。
格式可以是一个预定义的,你也可以明确指定格式。
预定义的格式是:short,medium,long和full.定义了结果字符串的长度。例如,如果locale是US_EN,时区是US.PACIFIC,那么:
${openingTime?string.short}
${openingTime?string.medium}
${openingTime?string.long}
${openingTime?string.full}
${nextDiscountDay?string.short}
${nextDiscountDay?string.medium}
${nextDiscountDay?string.long}
${nextDiscountDay?string.full}
${lastUpdated?string.short}
${lastUpdated?string.medium}
${lastUpdated?string.long}
${lastUpdated?string.full}
输出类似这样:
12:45 PM
12:45:09 PM
12:45:09 PM CEST
12:45:09 PM CEST
4/20/07
Apr 20, 2007
April 20, 2007
Friday, April 20, 2007
4/20/07 12:45 PM
Apr 20, 2007 12:45:09 PM
April 20, 2007 12:45:09 PM CEST
Friday, April 20, 2007 12:45:09 PM CEST
short,medium.long和full准确的意思依赖于当前locale(语言),此外,这是你运行FreeMarker的java实现平台所指定的,而不是FreeMarker.
对于即包含日期和时间的日期值,你可以单独的指定日期和时间部分的长度。
${lastUpdated?string.short_long} <#-- short date, long time -->
${lastUpdated?string.medium_short} <#-- medium date, short time -->
将会输出:
4/8/03 9:24:44 PM PDT
Apr 8, 2003 9:24 PM
注意:string.short跟?string.short_short是一样的,?string.medium和string.medium_medium一样……
警告:
不幸的是,由于java平台的限制。当你在Data Model中存有日期值的时候,FreeMarker不能决定该变量只存储日期部分或者时间部分再或者日期和时间。这种情况下当你 像${lastUpdated?string.short}或者简单的${lastUpdated}这样写的时候,FreeMarker不知道如何显示日 期。这样它会停下来,并且报错。为了防止这样,你可以使用?date,?time和?datetime内置标签来帮助FreeMarker.举 例:${lastUpdated?datetime?string.short}.询问程序员某个日期变量是否存在这个问题,或者一直使 用?date,?time和?datetime.
你可以使用?string(格式)明确指定格式,代替预定义格式。格式使用java日期格式语法例如:
${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}
${lastUpdated?string("EEE, MMM d, ''yy")}
${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}
将会输出:
2003-04-08 21:24:44 Pacific Daylight Time
Tue, Apr 8, '03
Tuesday, April 08, 2003, 09:24:44 PM (PDT)
注意:
不像预定义格式,你不需要在指定的格式上使用?date,?time和?datetime,因为你指定的格式告诉FreeMarKer显示日期的哪 部分。无论如何,FreeMarker都会相信你,so you can show "noise" if you display parts that are actually not stored in the variable.例如:${openingTime?string("yyyy-mm-dd hh:mm:ss a")},openingTime只存储了时间。将会显示1790-01-01 09:24:44 PM.
格式也可以是short,medium……"short_medium"等等。这样跟你用"."使用预定义的格式是一样的:someDate?string("short")和someDate?string.short是相当的。
date,time,datetime
这些标签可以用来指定日期变量中的哪些部分被使用。
date:只使用年、月、日
time:只使用时、分、秒和毫秒部分
datetime:日期和时间两部分都被使用
理想情况下,你不需要使用它们。不幸的是,由于java平台的技术限制。FreeMarker有的时候不能找到日期变量使用的部分(例如:只有年月 日,或者只有时分秒,或者两者)询问程序员那个变量存在这个问题。如果FreeMarker需要执行一个需要这个变量的操作--就像把日期作为字符显示 --但是它不知道使用那些部分,它会停下来报错。这就是你必须使用这些标签的情况。例如:假定openingTime就是这样一个问题变量:
<#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 -->
另一种用法:切短日期。例如:
Last updated: ${lastUpdated} <#-- assume that lastUpdated is a date-time value -->
Last updated date: ${lastUpdated?date}
Last updated time: ${lastUpdated?time}
将显示:
Last updated: 04/25/2003 08:00:54 PM
Last updated date: 04/25/2003
Last updated time: 08:00:54 PM
- 浏览: 316905 次
文章分类
最新评论
-
lyjilu:
作者文笔不错,公司也不错
项目经理叫你改Bug,后来就发生了…… -
chrislee1982:
我只能说那个开发的,能力是有的,情商有点让人着急
项目经理叫你改Bug,后来就发生了…… -
movingboy:
这个做法不奇怪吧?生产急用就先临时解决,回头再想办法优化
项目经理叫你改Bug,后来就发生了…… -
tcrct:
已经在项目中大部份都用到了。
Java程序员一定知道的优秀第三方库 -
xianlc:
整理的很全
Java程序员一定知道的优秀第三方库
发表评论
-
大话程序猿眼里的高并发
2016-11-08 09:49 855高并发是指在同一个时 ... -
项目经理叫你改Bug,后来就发生了……
2016-09-20 09:05 1796你曾经碰到过现在这种情况: 你的代码非常优雅。 ... -
Java程序员一定知道的优秀第三方库
2016-05-19 13:41 3888几乎每个程序员都知道要“避免重复发明轮子”的道理——尽可能使 ... -
我已经写了48年代码了,我感觉我还能写下去
2015-11-22 11:06 2255这是来自quroa的问题:Why-aren't-there- ... -
程序猿为什么老是活得比狗还累?
2015-11-04 08:36 3655一年多,我仗著自己年 ... -
Java开发熟手该当心的11个错误
2015-06-27 13:54 3485#1、不在属性文件或XML文件中外化配置属性。比如,没有把 ... -
Java开发熟手该当心的11个错误
2015-03-22 09:36 4743#1、不在属性文件或XML文件中外化配置属性。比如,没有把 ... -
Java开发者写SQL时常犯的10个错误
2015-03-14 17:13 42381、不用PreparedStatements ... -
关于java堆内存溢出的几种情况
2015-02-27 10:01 6510【情况一】: java ... -
Java线程中yield与join方法的区别
2015-02-21 17:53 6024长期以来,多线程问题 ... -
Java进行RSA加解密的例子
2015-02-08 09:56 4265加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理 ... -
最具争议的10个Java话题
2015-02-05 09:10 27091、Java8已经到来。什么!? Java8 支持lambd ... -
为什么不允许代码里出现“魔数”
2015-01-29 10:13 953在一个新项目中,我最先做的事情之一,就是建立使用诸如Ch ... -
Java高效读取大文件
2015-01-21 13:45 1171读取文件行的标准方式是在内存中读取,Guava 和Apa ... -
Java常见内存溢出异常分析
2015-01-20 06:15 738栈溢出(StackOverflowError) 栈 ... -
成为高级程序员的10个步骤
2015-01-17 11:09 1589What 软件工程师的职业生涯要历经以下几个阶段:初级、中 ... -
Java 9中新的货币API
2015-01-11 10:34 1321JSR 354定义了一套新的Java货币API,计划会在J ... -
Java中有关Null的9件事
2015-01-03 21:13 1690Java中的Null是什么? 正如我说过的那样,nu ... -
理解Java中的弱引用
2014-12-31 09:38 2287不久之前,我面试了一些求职Java高级开发工程师的应聘者。 ... -
程序员找不到开发工作的6大原因
2014-12-29 23:20 22961.我们Google了你的名字 “这家伙不错”,但是当我用 ...
相关推荐
4. **配置**:FreeMark可以通过`freemarker.properties`文件进行配置,设置如模板加载策略、日期时间格式、错误处理等。 5. **模板缓存**:FreeMark可以缓存编译后的模板,提高性能。通过配置可以调整缓存大小和...
Freemarker有内置的函数库(如字符串处理、日期时间操作),还可以添加自定义函数库,增强模板的功能。 3. 缓存机制: 对于频繁使用的模板,Freemarker可以缓存编译后的模板类,提高性能。 4. 国际化支持: ...
- **内置函数**:Freemarker提供了很多内置函数,如字符串操作、日期处理等。 - **模板继承**:通过`<#extends>`和`<#block>`实现模板的继承,方便页面布局的复用。 5. **最佳实践** - **模板设计**:保持模板...
- **`datetime`**:处理日期和时间相关的操作。 - **`is_boolean`**:判断给定的对象是否为布尔类型。 - **`short`**:处理短整型相关的操作。 - **`is_hash_ex`**:判断是否是一个哈希表扩展类型。 - **`ends_with`...
在“freemark_java_test”目录下,你可以找到不同的示例模板文件(如`.ftl`扩展名),以及对应的Java代码,它们展示了如何配置FreeMarker,如何创建数据模型,以及如何处理模板输出。通过学习和运行这些示例,你将...
3. **国际化(Internationalization)**: FreeMarker支持多语言,通过`<#t>`或`<#lt>`标签进行日期和时间格式化,`<#trans>`处理翻译。 4. **自定义函数和指令(Custom Tags and Directives)**: 可以通过扩展...
这个“Freemarker概述教程5分钟入门pdf”很可能是为初学者设计的快速入门指南,旨在帮助用户在短时间内理解并掌握Freemarker的基本概念和用法。 **Freemarker的核心概念:** 1. **模板(Template)**:模板是...
5. `date`, `time`, `datetime`:将字符串转换为日期或时间对象,需要提供正确的日期/时间格式。 6. `ends_with(substring)`:判断字符串是否以指定子串结尾,返回布尔值。 7. `html`:将字符串中的特殊字符转换为...
5. **格式化和重构**:可以对FreeMarker代码进行格式化,保持代码整洁;同时,也支持代码重构操作,提高代码质量。 6. **集成开发环境**:与Eclipse的集成意味着可以享受到IDE的其他功能,如版本控制、任务管理、...
转换器变量用于在模板中转换数据类型,比如将日期转换为特定格式的字符串。 ##### 2.6 节点变量 在处理XML或类似结构化数据时,节点变量变得尤为有用,它们可以表示XML文档中的各个元素。 ##### 2.7 对象包裹 ...
开发者可以自定义FreeMarker的配置,如模板目录、模板加载策略、日期时间格式化等,通过`Configuration`类进行设置。 8. **最佳实践**: - 将模板与业务逻辑分离,只在模板中处理数据展示。 - 使用模板继承来...
内建函数部分讲解了处理字符串、数字、日期、布尔值、序列、哈希表、XML节点的各种内建函数。指令参考文档部分则详细说明了if、else、elseif、switch、case、default、break、include、import、noparse、compress、...
3. **内置函数**:FreeMarker提供了许多内置函数,如`date`用于格式化日期,`list`用于转换数组或列表,`escape`系列函数用于转义特殊字符。 4. **模板继承与导入**:通过`<#macro>`定义宏,可以创建可重用的模板...
9. **日期和格式化**:FreeMarker提供了一系列内置函数,例如`date?string("yyyy-MM-dd")`,可以将日期对象转换为指定格式的字符串。 10. **国际化(i18n)支持**:通过`<#t>`和`<#lt>`标签,FreeMarker可以轻松地...
- **日期格式化**:Freemarker提供了多种日期格式化方法,如`date?string("yyyy-MM-dd")`。 - **全局共享变量**:可以在配置文件中定义全局共享变量,供所有模板使用。 - **调用Java对象方法**:可以直接在模板中...
尤其对于初学者,图解能够减少因理解错误导致的调试时间,提升学习效率。 8. **最佳实践**:在实际开发中,遵循良好的编码规范和设计模式,如贫血模型和富模型的使用,以及事务管理的最佳实践,可以确保项目的可...
- **内建函数参考**:包括字符串处理、数字处理、日期处理、布尔值处理、序列处理、哈希表处理以及节点和XML的处理。 - **指令参考**:涉及条件判断、循环处理、包含文件、宏定义、错误处理等指令的使用说明。 这...
string('yyyy-MM-dd')}`:将日期转换为指定格式(例如 YYYY-MM-DD)并输出。 - `${book?string.number}20`:输出数字,并可选择不同的格式。 - `${book?string.currency}`:输出货币格式。 - `${book?string....