Java中如何表示当前时间,说到这里,很容易想到Date类。没错这是最常用的,也是最简单的表示时间的类。请看代码:
- importjava.util.Date;
- publicclassTestDate{
- publicstaticvoidmain(Stringargs[]){
- Datedate=newDate();
- System.out.print(date);
- }
- }
运行结果是:
- SatSep0614:13:46CST2008
可以很直接的看出来当前我编辑这个帖子的时间是多少。也就是说运行该程序直接取得的是当前主机的时间。如果你觉得这样看上去很晕,毕竟不是我们所习惯的那种表示时间的方法,那么你可以做一些小改动了。请看代码:
- importjava.util.Date;
- importjava.text.*;
- publicclassTestDate{
- publicstaticvoidmain(Stringargs[]){
- Datedate=newDate();
- SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddhh-mm-ss");
- System.out.print(dateFormat.format(date));
- }
- }
我们需要借助于SimpleDateFormat类的format方法来格式化当前时间。输出结果为:
- 2008-09-0602-17-07
Date类虽然简单好用,但是你去看看现在的Java API,里面的方法基本都是过时的,也就是不推荐使用了。方法少了,自然功能也就减弱了。不过还在Java的发明和维护者给我们提供了抽象类Calendar类以及它的直接子类GregorianCalendar。这两个类也是位于java.util包类。一般使用是要利用Calendar的静态方法getInstance()构造一个当前时区的日历,再做下一部操作。请看下面的代码,该代码的功能是找出给定两个日期之间的所有日期,并按照给定的格式打印。
- importjava.util.*;
- importjava.text.*;
- publicclassDisplayDateEveryday{
- publicstaticvoidmain(Stringargs[]){
- display("2008-08-08","2008-08-24");
- }
- publicstaticvoiddisplay(StringdateFirst,StringdateSecond){
- SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");
- try{
- DatedateOne=dateFormat.parse(dateFirst);
- DatedateTwo=dateFormat.parse(dateSecond);
- Calendarcalendar=Calendar.getInstance();
- calendar.setTime(dateOne);
- while(calendar.getTime().before(dateTwo)){
- System.out.println(dateFormat.format(calendar.getTime()));
- calendar.add(Calendar.DAY_OF_MONTH,1);
- }
- }
- catch(Exceptione){
- e.printStackTrace();
- }
- }
- }
结果输出为:
- 2008-08-08
- 2008-08-09
- 2008-08-10
- 2008-08-11
- 2008-08-12
- 2008-08-13
- 2008-08-14
- 2008-08-15
- 2008-08-16
- 2008-08-17
- 2008-08-18
- 2008-08-19
- 2008-08-20
- 2008-08-21
- 2008-08-22
- 2008-08-23
这里只是简单的介绍了一下Calendar类的几个方法,具体可以查阅Java API文档,里面有详细的介绍。
另外我们还经常用到一个时间概念,就是System.currentTimeMillis()。可以利用它来计算我们代码运算所耗费的时间。请看代码:
- publicclassTestFrequency{
- publicstaticvoidmain(Stringargs[]){
- longtimeFirst=System.currentTimeMillis();
- doublecount=0;
- for(inti=0;i<100000000;i++){
- ++count;
- count*=count;
- }
- System.out.print("After"+(System.currentTimeMillis()-timeFirst)/1000+"s,count="+count);
- }
- }
看看打印的数据吧,挺搞笑的...
- After1s,count=Infinity