使用Ant获取时间戳差异

时间:2012-06-28 11:38:32

标签: ant timestamp

我需要使用Ant来计算时差 基本上它有2个变量。一个被分配当前时间,另一个被分配不同的时间。我需要使用Ant获得时差。像下面的东西。如果有人有代码请回复。

variable a = current time;
variable b = different time
echo (a - b) ;

4 个答案:

答案 0 :(得分:3)

这是一个更简单的解决方案:

<script language="javascript">
  project.setProperty('startTime', new Date().getTime());
</script>
...
<script language="javascript">
  project.setProperty('elapsedTime', new Date().getTime() - startTime)
</script>
<echo>Elapsed time: ${elapsedTime} ms</echo>

答案 1 :(得分:2)

替代@LeFunes答案(并使用tstamp任务)

<tstamp prefix="task.start">
<format property="millis" pattern="SSS"/>
</tstamp>
<tstamp prefix="task">
  <format property="start" pattern="E, dd MMM YYYY hh:mm:ss"/>
</tstamp>
<time-consuming-task/>
<tstamp prefix="task.stop">
<format property="millis" pattern="SSS"/>
</tstamp>
<tstamp prefix="task">
  <format property="stop" pattern="E, dd MMM YYYY hh:mm:ss"/>
</tstamp>
<script language="javascript">
  project.setProperty("task.diff", 
    Math.abs(
      (Date.parse(project.getProperty("task.stop")) +
         +project.getProperty("task.stop.millis")) - 
      (Date.parse(project.getProperty("task.start")) + 
         +project.getProperty("task.start.millis"))))
</script>
<echo>
  task completed in ${task.diff} ms
</echo>

注意:  这不考虑毫秒  更新以考虑毫秒

答案 2 :(得分:0)

<?xml version="1.0" encoding="UTF-8"?>
<project name="TEST ANT" default="test" basedir="..">
    <target name="test" description="">

        <script language="javascript"> <![CDATA[
            var ts1 = new Date();
            project.setProperty("current.time.1", ts1.toLocaleString());
            project.setProperty("current.time.1.mill", ts1.getTime());
        ]]></script>
        <echo>Timestamp 1: ${current.time.1} [${current.time.1.mill}]</echo>

        <sleep milliseconds="1300"></sleep>

        <script language="javascript"> <![CDATA[
            var ts2 = new Date();
            project.setProperty("current.time.2", ts2.toLocaleString());
            project.setProperty("current.time.2.mill", ts2.getTime());
        ]]></script>
        <echo>Timestamp 2: ${current.time.2} [${current.time.2.mill}]</echo>

        <script language="javascript"> <![CDATA[
            project.setProperty("res", project.getProperty("current.time.2.mill")-project.getProperty("current.time.1.mill"));
        ]]></script>
        <echo>Diff: ${res}</echo>
    </target>
</project>

答案 3 :(得分:0)

如果您不想使用JavaScript,可以使用Math task实用程序提供的Ant-Contrib

Ant-Contrib相当陈旧,我不知道是否还有人在维护它们,但是它们在Ant构建文件中非常流行,因为它们添加了一些非常有用的任务。

我建议将ant-contrib-1.0b3.jar包含在项目中。当其他人使用你的项目时,他们也会拥有Ant-Contrib jar。我将ant-lib/ac/ant-contrib-1.0b3.jar放在项目的主目录下。我对所有可选的jar使用ant-lib

<project name="my.project"
    ...
    xmlns:ac="antlib:net.sf.antcontrib">

   ...

    <taskdef uri="antlib:net.sf.antcontrib"
        resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <fileset dir="${basedir}/antlib/ac"/>
        </classpath>
    </taskdef>

    ....

现在,您可以像这样使用数学任务:

    <ac:math result="time.diff"
        operation="-"
        operand1="${diff.time}"
        operand2="${initial.time}"/>

ac:是在<project/>实体中声明的XML命名空间,并通过uri实体中的<taskdef/>参数连接到您的任务。这允许您具有多个可选的Ant任务,这些任务可能具有重复名称的任务。如果您使用具有相同任务名称的多个可选任务库,这是一个好主意。