关于java时间相关类的简述

一、关于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);
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值