Freemarker日期函数处理【转】

(2012-08-01 14:32:13)

标签:

杂谈

 

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

Freemarker日期函数处理【转】的更多相关文章

  1. PHP之时间和日期函数

    // 时间日期函数 Time <?php date_default_timezone_set('UTC'); // 获取当前时间的时间戳 $time0 = mktime(); $time1 = ...

  2. SQL Server 日期函数:EOMonth、DateFormat、Format、DatePart、DateName

    一,月份的最后一天 函数 EOMonth 返回指定日期的最后一天 EOMONTH ( start_date [, month_to_add ] ) 1,对于start_date 有两种输入方式,能够转 ...

  3. mysql 日期函数总结

    1.0 格式化:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是合法的日期.format 规定日期/时间的 ...

  4. sql 的实用函数(包含日期函数、截取字符串函数)

    CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),data_to_b ...

  5. DB2 SQL 日期函数

    DB2 SQL 日期函数1:CURRENT TIMESTAMP 函数:获取当前日期时间语法:CURRENT TIMESTAMP参数:当前日期时间返回值:当前日期时间 2:CURRENT DATE 函数 ...

  6. SQLserver日期函数

      ------------------日期转化成年月日时分秒毫秒--------------- select 'R'+CONVERT(varchar(100), GETDATE(), 112)+ri ...

  7. php 目录函数和日期函数

    continue . break . exit目录函数opendir(); 打开一个文件夹is_file 只判断文件是否存在: file_exists 判断文件是否存在或者是目录是否存在: is_di ...

  8. SQL-数学、字符串、时间日期函数和类型转换

    --数学函数 --ABS绝对值,select ABS(-99)--ceiling取上限,select CEILING(4.5)--floor去下限select FLOOR(4.5)--power 几次 ...

  9. javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数

    javascript函数一共可分为五类:    ·常规函数    ·数组函数    ·日期函数    ·数学函数    ·字符串函数    1.常规函数    javascript常规函数包括以下9个 ...

随机推荐

  1. ECSTORE日期时间控件转换为时间戳的方法

    如果你在后台使用<{input type=”time” name=”time”}>的话,后台获取到的表单数据为: ["_DTYPE_TIME"]=> array( ...

  2. Flask学习记录之Flask-WTF

    Flask-wtf时Wtforms库的flask框架扩展,能够方便的处理Web表单 一.定义一个web表单 使用flask-wtf时,每个web表单都由一个继承自flask.ext.wtf.Form的 ...

  3. HTML&CSS基础学习笔记1.26-input重置表单

    重置表单 <input>的[type]属性值为"button"的时候表示一个普通的按钮,相当于一个<button>标签. <input>的[ty ...

  4. 一些关于poi导入的样例

    获取请求对象 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 获取上传的文件 ...

  5. vs2010 suite integration toolkit execution

    原因是UltraDeamen的问题,重新换个WinMount来解压ISO文件.完美安装运行

  6. TableView 校检表

    这俩天学习了tableView 校检表 主要就是通过一个方法来跟踪当前选中的行.下面将声明一个NSIndexPath 的属性来跟踪最后选中的行.这篇文章希望能给那些初学者带来学习的乐趣.不说了直接上代 ...

  7. MYSQL中的语句

    MYSQL中的语句 decimal(8,2):最多存10位数的数字,小数点后保存两位.如:999999.99

  8. hdu 5423 Rikka with Tree(dfs)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  9. Android studio无法更新 提示网络连接失败

    Android studio 更新时,提示网络问题 “Connection failed. Please check your network connection and try again” 在默 ...

  10. BoneCP学习笔记

    什么是BoneCP BoneCP 是一个快速.免费而且开源的java数据库连接池(JDBC Pool)管理工具库.如果你曾经使用过C3P0或者DBCP,那你肯定知道上面这句话的意思:如果你没用过这些, ...