在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件或者文件夹,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR 或 zip 文件的文件名中。
这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 <tstamp/> 就足够了。
tstamp 不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 属性。下面是 tstamp 设置的一些属性、对每个属性的说明,以及这些属性可被设置到的值的例子:
属性 说明 例子
DSTAMP 设置为当前日期,默认格式为yyyymmdd 20031217
TSTAMP 设置为当前时间,默认格式为 hhmm 1603
TODAY 设置为当前日期,带完整的月份 2003年12月17日
例如,在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示:
<jar destfile="package-${DSTAMP}.jar" basedir="classes"/>
因此,如果这个任务在 2003 年 12 月 17 日调用,该 JAR 文件将被命名为 package-20031217.jar。
还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:
<tstamp>
<format property="OFFSET_TIME"
pattern="HH:mm:ss"
offset="10" unit="minute"/>
</tstamp>
上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。
用于定义格式字符串的字符与 java.text.SimpleDateFormat 类所定义的那些格式字符相同。
使用ant tstamp任务
<target name="tatamp">
<tstamp>
<format property="DSTAMP" pattern="yyyyMMdd"/>
</tstamp>
<zip destfile="./${DSTAMP}.rar"
basedir="${temp}"
/>
</target>
此任务的作用:在运行目录下生成一个以时间戳为文件名的rar文件。
<project default="dateFormat">
<target name="dateFormat">
<tstamp />
<!--
属性 说明 例子
DSTAMP 设置为当前日期,默认格式为yyyymmdd 20100511
TSTAMP 设置为当前时间,默认格式为 hhmm 2108
TODAY 设置为当前日期,带完整的月份 May 11 2010
-->
<echo message="${DSTAMP}" />
<echo message="${TSTAMP}" />
<echo message="${TODAY}" />
</target>
<!--
<tstamp>
<format property="DSTAMP" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
-->
</project>