java基础——时间和日期

时间:2022-09-03 22:03:25

Java中定义了很多不同的类来处理日期和时间。java.util.Date类代表的是当前时间(精确到毫秒)。该类只是对一个长整数进行封装,它保存的是自格林尼治标准时间1970年1月1日零时起开始经过的毫秒数。下面给出了两种计算当前时间的方法:

Long t0=System.currentTimeMillis();//以毫秒表示的当前时间

java.util.Date now= new java.util.Date();  //实际上是一回事

Long t1= now.getTime();  //把日期型转换成长整数类型

 

Date类包含很多非常有趣的方法,但是这些方法大部分都已经废弃不用了,现在我们更多地使用的是java.util.Calendar和java.text.DateFormat类。如果我们想打印日期或时间,我们可以用DateFormat类,这个类会自动处理根据特定地点提出的不同日期和时间格式。DateFromat类甚至还可以正确显示那些不使用阳历的地区的日期和时间。

 

//用当前地点的默认格式显示今天的日期

DateFormat defaultDate= DateFromat.getDateInstance();

System.out.println(defaultDate.format(new Date()));

 

//用短时间格式显示当前地点的当前时间

DateFormat shortTime= DateFormat .getTimeInstance(DateFormat.SHORT);

System.out.println(shortTime.format(new Date());

 

//用长格式显示日期和时间

DateFormat longTimestamp = DateFromat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);

 

System.out.println(ongTimestamp.format(new Date());

 

//利用SimpleDateFromat类定义我们需要的格式模板

DateFormat myformat= new SimpleDateFormat("yyyy.MM.dd");

System.out.println(myformat.format(new Date()));

 

Try{  //DateFormat类也可以解析日期

Date leapday=myformat.parse("2000.02.29");

}catch(ParseException e){....}

 

Dare类和它的毫秒表示只允许进行形势非常简单的日期运算:

Long now= System.currentTimeMillis();  //当前时间

Long anHourFromNow =now + (60*60*1000); //机上3600000毫秒

 

为了进行更为复杂的日期和时间运算,并且用人们通常比较关心的方式来处理日期,我们可以使用java.util.Calendar类:

 

//得到一个当前地点和时区的Calendar实例

Calendar cal=Calendar.getInstance();

 

cal.setTime(new Date());  //设置当前时间

Int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);  //今天是这一年的哪一天?

 

Cal.set(2000,Calendar.FEBRUARY,29);  //设置字段年,月和日

Int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);  //2000年的闰日是星期几?

 

//2001年5月的第三哥星期四是这个月的哪一天?

Cal.set(Calendar.YEAR,2001); //设置年

Cal.set(Calendar.MONTH,Calendar.May);  //设置月

Cal.set(Calendar.DAY_OF_WEEK,Calendar.THURSDAY);  //设置星期几

Cal.set(Calendar.DAY_OF_WEEK_IN_MONTH,3); //设置星期

Int dayOfMonth=cal.get(Calendar.DAY_OR_MONTH); //在一个月中查询日期

 

//要得到的Date对象表示的是30天后的日期

Date today=new Date();

cal.setTime(today);

Cal.add(Calendar.DATE,30);

Date expiration =cal.getTime();  //检索结果日期