一、关于java.util.Date类:
1)该类中好多方法都是废弃的,但是在一些情况下不得不使用这个类。
public class DateTest {
public static void main(String[] args) {
//创建当前时间对象
java.util.Date date = new java.util.Date();
//创建指定的日期:年 - 1900,月 + 1
java.util.Date date2 = new java.util.Date(1991 -
1900,5-1,20);
//获取年需要加上1900
int year = date2.getYear();
//获取月必须 + 1
int month = date2.getMonth() + 1;
//获取日
int day = date2.getDate();
//获取时
int hours = date2.getHours();
//获取分
int minutes = date2.getMinutes();
System.out.println(minutes);
//获取秒
int seconds = date2.getSeconds();
/*将 Date类型的时间转换为long类型的数值,表示 1970 年 1
*月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。有助于和
*格林威治表示的时间之间转换
*/
long times = date2.getTime();
}
}
二、关于java.util.Calendar
import java.util.Calendar;
public class CalendarAPI {
/*
* 一、获取Calendar实例
* 1、Calendar是抽象类,并且Calendar的构造器是Portected,所以
* Calendar的实例不能通过 new创建。
* 创建Calendar实例的方法是通过Calendar的静态方法
* getInstance()和他的几个重载方法获取。
*
* 2、Calendar的实例是通过一个叫BuddhistCalendar的类创建的,
* 具体调用过程是:
* Calendar的getInstance()方法通过调用BuddhistCalendar
* 类创建的。
*
* 3、Calendar实例创建的几个重载方法:
* static getInstance() 最常用的
* static getInstance(Location alocation)
* static getInstance(Location alocation, TimeZone timezone)
*
*/
//创建Calendar实例
public static Calendar getCalendar(){
return Calendar.getInstance();
}
//创建指定的日历
public static Calendar getCalendar(int year,int month,int day){
Calendar c = Calendar.getInstance();
c.clear();
c.set(Calendar.YEAR, year);
//设置时间的时候,month必须减一,才能得到当前的正确日期,而在获取的时候,进行month + 1
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DAY_OF_MONTH, day);
return c;
}
/*
* Calendar表示时间的规则:
* 月份 0-11,所以在获取月份是要进行 +1 操作
* 星期 1表示星期日,对于这种没办法进行操作,所以必须记住这个规则
*
* Calendar有大量的常量来获取时间:具体阅读API
*/
//关于获取时间的一些方法
public static void get(Calendar c){
//获取年
int year = c.get(Calendar.YEAR);
//获取月 必须记住 +1 操作
int month = c.get(Calendar.MONTH)+ 1;
//获取一个月中的几号
int day = c.get(Calendar.DAY_OF_MONTH);
Calendar.HOUR_OF_DAY 24小时制
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println("当前时间为:" + year + "年 " + month + "月 " +
day + "日 " + hour + "点 " + minute + "分" + second +"秒");
}
//在一个时间的基础上,增加,减少一个具体的日期
/*
* int 参数为整数是增加,为负数为减少
*/
public static void get(Calendar c, int year, int
month, int day, int hour, int minute, int second){
c.add(Calendar.YEAR, year);
c.add(Calendar.MONTH, month);
c.add(Calendar.DAY_OF_MONTH, month);
c.add(Calendar.HOUR_OF_DAY, hour);
c.add(Calendar.MINUTE, minute);
c.add(Calendar.SECOND, second);
}
//计算指定日期在一年中是第几个星期
public static int weekNo(Calendar c){
return c.get(Calendar.WEEK_OF_YEAR);
}
/* 计算两个给定日期相隔的天数时这种计算结果有偏差:
* 比如11月3号23点 和 11月4号11之间计算结果为0,某些需求要求结
* 果为1时,这种方式就不能实现,这种情况下可以把结束时间设置为 23
* 时 59分 59秒
*/
public static int getTimeInterval(Calendar startday, Calendar endday){
if(startday.after(endday)){
Calendar temp=startday;
startday=endday;
endday=temp;
}
long start = startday.getTimeInMillis();
long end = endday.getTimeInMillis();
long difference = end - start;
return (int)difference/(1000*24*60*60);
}
//结束时间设置为 23时 59分 59秒
public static int getTimeInterval2(Calendar startday,
Calendar endday){
endday.set(Calendar.HOUR, 23);
endday.set(Calendar.MINUTE, 59);
endday.set(Calendar.SECOND, 59);
if(startday.after(endday)){
Calendar temp=startday;
startday=endday;
endday=temp;
}
long start = startday.getTimeInMillis();
long end = endday.getTimeInMillis();
long difference = end - start;
return (int)difference/(1000*24*60*60);
}
//精确计算两个日期之间相隔的天数
public int getDaysBetween (Calendar d1, Calendar d2) {
if (d1.after(d2)) {
java.util.Calendar temp = d1;
d1 = d2;
d2 = temp;
}
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
int y2 = d2.get(Calendar.YEAR);
if (d1.get(Calendar.YEAR) != y2) {
d1 = (Calendar) d1.clone(); //为了在do-while不改变d1
do {
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);
d1.add(Calendar.YEAR, 1);
} while (d1.get(Calendar.YEAR) != y2);
}
return days;
}
}
三、关于java.util.GregorianCalendar类,和Calendar使用差不多,他是Calendar的
实现类。
四、关于时间之间的转换
public class DateConversion {
public static void main(String[] args) {
//Date –>Calendar
java.util.Date date = new java.util.Date();
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
long million = date.getTime();
c1.setTimeInMillis(million);
//Calendar --> Date
Date d = c1.getTime();
//Date --> long
long n = d.getTime();
//long -- > Date
d = new Date(n);
//Calendar --> long
long l = c1.getTimeInMillis();
}
}
五、关于java.text.SimpleDateFormat
public class SimpleDateFormatAPI {
public static void main(String[] args) throws ParseException {
SimpleDateFormat dtfmt = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
// Date –> String
String dtstr = dtfmt.format(new java.util.Date());
System.out.println(dtstr);
// String –>Date
String str = “191-05-20 12:33:22”;
java.util.Date dt = dtfmt.parse(str);
System.out.println(dt);
}
}