Java中如何表示当前时间,说到这里,很容易想到Date类。没错这是最常用的,也是最简单的表示时间的类。请看代码:
- import java.util.Date;
- public class TestDate {
- public static void main (String args[]){
- Date date = new Date();
- System.out.print(date);
- }
- }
运行结果是:
- Sat Sep 06 14:13:46 CST 2008
可以很直接的看出来当前我编辑这个帖子的时间是多少。也就是说运行该程序直接取得的是当前主机的时间。如果你觉得这样看上去很晕,毕竟不是我们所习惯的那种表示时间的方法,那么你可以做一些小改动了。请看代码:
- import java.util.Date;
- import java.text.*;
- public class TestDate {
- public static void main (String args[]){
- Date date = new Date();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
- System.out.print(dateFormat.format(date));
- }
- }
我们需要借助于SimpleDateFormat类的format方法来格式化当前时间。输出结果为:
- 2008-09-06 02-17-07
Date类虽然简单好用,但是你去看看现在的Java API,里面的方法基本都是过时的,也就是不推荐使用了。方法少了,自然功能也就减弱了。不过还在Java的发明和维护者给我们提供了抽象类Calendar类以及它的直接子类GregorianCalendar。这两个类也是位于java.util包类。一般使用是要利用Calendar的静态方法getInstance()构造一个当前时区的日历,再做下一部操作。请看下面的代码,该代码的功能是找出给定两个日期之间的所有日期,并按照给定的格式打印。
- import java.util.*;
- import java.text.*;
- public class DisplayDateEveryday {
- public static void main(String args[]){
- display("2008-08-08", "2008-08-24");
- }
- public static void display(String dateFirst, String dateSecond){
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- try{
- Date dateOne = dateFormat.parse(dateFirst);
- Date dateTwo = dateFormat.parse(dateSecond);
- Calendar calendar = 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(Exception e){
- 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()。可以利用它来计算我们代码运算所耗费的时间。请看代码:
- public class TestFrequency {
- public static void main(String args[]){
- long timeFirst = System.currentTimeMillis();
- double count = 0;
- for(int i=0; i<100000000; i++){
- ++ count;
- count *= count;
- }
- System.out.print("After "+ (System.currentTimeMillis()-timeFirst)/1000 +"s, count="+ count);
- }
- }
看看打印的数据吧,挺搞笑的...
- After 1s, count=Infinity