Java 有关获取时间的类:Date类、SimpleDateFormat类和Calendar类

Date类

Date类概述(util包下的)

类Date表示特定的瞬间,精确到秒

构造方法

public Date()
public Date(long time)

import java.util.Date;
public class test {
    public static void main(String[] args) {
    
        Date d1=new Date();    //如果没有传参数代表当前时间
        System.out.println(d1);   
        
        Date d2=new Date(0);    //如果构造方法中参数传为0代表的是1970年1月1日
        System.out.println(d2);
    }
    
}
输出:
Mon Sep 11 20:36:54 CST 2017
Thu Jan 01 08:00:00 CST 1970

成员方法

public long getTime()
public void setTime(long time)

import java.util.Date;
public class test {
    public static void main(String[] args) {
    
        Date d1=new Date();    //如果没有传参数代表当前时间
        System.out.println(d1.getTime());     //通过时间对象获取毫秒值
        
        System.out.println(System.currentTimeMillis());  //获取当前毫秒值
    }
    
}
输出:
1505133692683
1505133692683
import java.util.Date;
public class test {
    public static void main(String[] args) {
    
        Date d1=new Date();    //如果没有传参数代表当前时间
        d1.setTime(1000);      //设置毫秒值改变时间对象
        System.out.println(d1);     
    }
    
}
输出:
Thu Jan 01 08:00:01 CST 1970

SimpleDateFormat类

SimpleDateFormat类概述

DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat。

SimpleDateFormat构造方法

public SimpleDateFormat()
public SimpleDateFormat(String pattern)

SimpleDateFormat 成员方法

public final String format(Date date)
public Date parse(String source)

import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
    public static void main(String[] args) {
    
        Date d=new Date();    //如果没有传参数代表当前时间
        SimpleDateFormat sdf=new SimpleDateFormat(); //创建时间格式化对象
        System.out.println(sdf.format(d));     
    }
    
}
输出:
17-9-11 下午9:03

import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
    public static void main(String[] args) {
    
        Date d=new Date();    //如果没有传参数代表当前时间
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd  HH:mm:ss"); //创建时间格式化对象
        System.out.println(sdf.format(d));     
    }
    
}
输出:
2017/09/11  21:05:58
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test {

    public static void main(String[] args) {
        //Date d=new Date();
        String str="1993-06-08 12:35:06";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try{
            Date d= sdf.parse(str);  //将时间对象转换为日期对象
            System.out.println(d);
        }
        catch(ParseException e){
            e.printStackTrace();
            
        }
        
    }
    
}
输出:
Tue Jun 08 12:35:06 CST 1993

算一算你来到这个世界多少天
需求:算一算你来到这个世界多少天?
分析:
1.将生日字符串和今天字符串存在String类型的变量中
2.定义日期格式化对象
3.将日期字符串转换为日期对象
4.通过日期对象获取时间毫秒值
5.将两个时间相减除以1000,再除以60.再除以60,再除以24得到天

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test {

    public static void main(String[] args) {
        
        //1.将生日字符串和今天字符串存在String类型的变量中
        String birthday="1993-06-08";
        String today="2017-09-12";
        //2.定义日期格式化对象
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        
        try{
            //3.将日期字符串转换为日期对象
            Date db= sdf.parse(birthday);  //将时间对象转换为日期对象
            Date dt=sdf.parse(today);
            //4.通过日期对象获取时间毫秒值
            long time=dt.getTime()-db.getTime();
            //5.将两个时间相减除以1000,再除以60.再除以60,再除以24得到天
            System.out.println(time/1000/60/60/24);
        }
        catch(ParseException e){
            e.printStackTrace();
            
        }
        
    }
    
}
输出:
8862

Calendar类

Calendar类概述

Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获取下星期的日期)提供了一些方法。

成员方法

public static Calendar getInstance()
public int get(int field)
public void add(int field,int amount)
public final void set(int year,int month,int date)

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test {
    public static void main(String[] args) {
        
        Calendar c=Calendar.getInstance();    //父类引用指向子类对象
        
        System.out.println(c.get(Calendar.YEAR));  //通过字段获取年份
        System.out.println(c.get(Calendar.MONTH));   //通过字段获取月,但是月是从0开始编号的
        System.out.println(c.get(Calendar.DAY_OF_MONTH));    //月中第几天
        System.out.println(c.get(Calendar.DAY_OF_WEEK));    //周中第几天,周日是第一天,周六是最后一天
        
        System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日   "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
        
        
        
    }
    
    public static String getWeek(int week){
        String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        return arr[week];
    }
}
输出:
2017
8
12
3
2017年9月12日   星期二
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test {
    public static void main(String[] args) {
        
        Calendar c=Calendar.getInstance();    //父类引用指向子类对象
        
        c.add(Calendar.DAY_OF_MONTH, -1);   //对指定的字段进行向前减或者向后加
        c.set(c.YEAR, 1993);                  //修改指定字段
        
        System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日   "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
        
        c.set(1993, 5, 8);
        System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日   "+getWeek(c.get(Calendar.DAY_OF_WEEK)));
        
    }
    
    public static String getWeek(int week){
        String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        return arr[week];
    }
}
输出:
1993年9月11日   星期六
1993年6月8日   星期二

案例演示

需求:键盘录入任意一个年份,判断该年是闰年还是平年
分析:
1.键盘录入年份 Scanner
2.创建Calendar c=Calendar.getInstance()
3.通过set方法设置为那一年的3月1号
4.将日向前减去1
5.判断该日是多少天,如果是29天则输出闰年否则输出平年

import java.util.Calendar;
import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        String str;
        //1.键盘录入年份  Scanner
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入年份:");
        int year=sc.nextInt();
        
        //2.创建Calendar c=Calendar.getInstance()
        Calendar c=Calendar.getInstance();    //父类引用指向子类对象
        
        //3.通过set方法设置为那一年的3月1号
        c.set(year, 2, 1);
        
        //4.将日向前减去1
        c.set(c.DAY_OF_MONTH, -1);
        
        //5.判断该日是多少天,如果是29天这输出闰年否则输出平年
        if(c.get(Calendar.DAY_OF_MONTH)==29)
             str="闰年";
        else
             str="平年";
        
        System.out.println(year+"年是"+str);
    }
    
}
输出:
请输入年份:
1993
1993年是平年
posted @ 2017-09-12 10:12  笨笨鸟  阅读(522)  评论(0编辑  收藏  举报