解惑

解己之惑,解人之惑

标签:日期

删除指定时间之前的文件

我们的自动测试会生成报告,原来的实现比较简单,就是删除32天前的那个目录,问题是可能某些天的build会失败,那么task不会被调用,这样可能保存的历史记录大于31了,偏离我们的目的了。查看了下ant的手册,发现有一个selector可以用,得到如下的内容:
    <target name="backup-report">
        <tstamp>
            <format locale="en" property="deletedDir" pattern="MM/dd/yyyy hh:mm aa" offset="-32" />
          </tstamp>
        <tstamp>
            <format property="thisDir" pattern="yyyy-MM-dd" />
          </tstamp>
        <mkdir dir="${reports-dir}/${thisDir}"/>
        <copy todir="${reports-dir}/${thisDir}">
            <fileset dir="${report-dir}">  
                <include name="**/*"/>
            </fileset>             
        </copy>       
        <delete>
            <fileset dir="${reports-dir}" includes="*">
                <date datetime="${deletedDir}" when="before"/>
            </fileset>
        </delete>
    </target>

问题是这个似乎不能删除目录,只有1.6.2以后才支持删除目录。
最终一个简单的方法就是在最开始就删除32天前的目录,这样就不会有太老的记录保留下来了。

Java的日期的缺省格式

在做那个单元测试框架的时候要进行类型转换,对于日期型的值,先转换为String然后可能会转换回Date类型,但是转换回Date类型的时候一直出错,后来没有办法看JDK的源代码,才知道日期的缺省格式比较变态,你要把那种格式的字符串转换回Date需要使用:

new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);

很纳闷为什么不把new SimpleDateFormat()的时候就设置为这种格式,非要在Date类的toString方法中使用这样的格式。

看文章的时候注意日期

今天做Junit单元测试的Ant脚本,老习惯,先上google上搜索下现成的东西复制过来再修改,google的结果中有一个IBM网站的文章,看了下,还不错,就是我想要的,但是文章使用了一个MimeMail发送邮件,感觉不爽,后来看了下ant的文档,发现mimemail已经不使用了,ant已经直接支持mail功能了。回头看了下文章的发表日期,天啦,竟然是2001年8月的老古董了。
提醒大家和我自己以后不要再犯同样的错误,在技术快速更新的现在,5年前的文章意味着什么,大家应该很清楚。

© 2024 解惑

本主题由Anders Noren提供向上 ↑