Java 常用类——Date 类、DateFormat 类、Calendar 类

一、Date 类

1、概述

  • Date 类表示特定的瞬间,精确到毫秒
  • 1970年1月1日0时0分0秒距离此事件的毫秒数(时间戳)
  • 得到时间戳的方法getTime()
  • 设置时间戳的方法setTime()

2、构造方法

  • public Date()//根据当前的默认毫秒值创建日期对象
  • public Date(long date)//根据给定的毫秒值创建日期对象
package riqi;

import java.util.Date;

public class DateDemo {
    public static void main(String[] args){
        Date d1 = new Date();
        System.out.println(d1);//返回当前时间
        System.out.println(d1.getTime());//返回时间戳

        long time = System.currentTimeMillis();//返回当前的计算机时间距1970年1月1日的毫秒数
        System.out.println(time);

        long t = 1000 * 60 * 60;//一小时
        Date d2 = new Date(t);
        System.out.println(d2);//返回:Thu Jan 01 09:00:00 CST 1970
    }
}

3、成员方法

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

二、DateFormat 类

1、概述

  • DateFormat 是日期、时间 格式化子类的抽象类
  • 是抽象类,其子类 SimpleDateFormat

2、SimpleDateFormat 的构造方法

  • public SimpleDateFormat()
  • public SimpleDateFormat(String pattern)
package riqi;

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

public class DateDemo {
    public static void main(String[] args){
        Date d1 = new Date();//创建对象
        long time1 = d1.getTime();//获取时间戳
        System.out.println(d1);
        System.out.println(time1);
        System.out.println("---------------------------");

        //设置时间
        d1.setTime(0);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        System.out.println(sdf.format(d1));
    }
}

3、DateFormat 的成员方法

  • public final String format(Date date)
  • public Date parse(String source)
package riqi;

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

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        //Date->String
        Date d1 = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 SSS毫秒");
        String s = sdf.format(d1);
        System.out.println(s);
        System.out.println("---------------------------");

        //String->Date
        String str = "2018年8月8日 12时12分12秒";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date d2 = sdf2.parse(str);
        System.out.println(d2);
    }
}

4、案例
算一下你来这个世界多少天

package riqi;

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

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的出生年月日");
        String s = sc.nextLine();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date birthday = sdf.parse(s);

        long cu = System.currentTimeMillis();//获取系统时间
        long l = cu - birthday.getTime();//你度过的毫秒数
        long d = l / (1000 * 60 * 60 * 24);
        System.out.println("您度过了"+d+"天");
    }
}

三、Calendar 类

1、概述

  • Calendar: 原意:日历、日程表
  • Calendar 类是抽象类,为特定瞬间与一组日历字段之间的转换提供了一写方法
package riqi;

import java.util.Calendar;

public class CanlendarDemo {
    public static void main(String[] args){
        Calendar now = Calendar.getInstance();//子类对象
        int year = now.get(Calendar.YEAR);//获取年
        int month = now.get(Calendar.MONTH);//获取月
        int day = now.get(Calendar.DATE);//获取日

        System.out.println(year+"年"+(month + 1)+"月"+day+"日");
    }
}

2、成员方法

  • 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)
package riqi;

import java.util.Calendar;

public class CanlendarDemo {
    public static void main(String[] args){
        Calendar c = Calendar.getInstance();//默认是当前时间

        // 获取年
        int year = c.get(Calendar.YEAR);
        // 获取月
        int month = c.get(Calendar.MONTH);
        // 获取日
        int date = c.get(Calendar.DATE);
        System.out.println(year + "年" + (month + 1) + "月" + date + "日");

        // 5年后的10天前
        c.add(Calendar.YEAR, 5);
        c.add(Calendar.DATE, -10);
        // 获取年
        year = c.get(Calendar.YEAR);
        // 获取月
        month = c.get(Calendar.MONTH);
        // 获取日
        date = c.get(Calendar.DATE);
        System.out.println(year + "年" + (month + 1) + "月" + date + "日");
        System.out.println("--------------");

        c.set(2011, 11, 11);
        // 获取年
        year = c.get(Calendar.YEAR);
        // 获取月
        month = c.get(Calendar.MONTH);
        // 获取日
        date = c.get(Calendar.DATE);
        System.out.println(year + "年" + (month + 1) + "月" + date + "日");
    }
}

3、案例

获取任意一年的二月有多少天
package riqi;

import java.util.Calendar;
import java.util.Scanner;

public class CanlendarDemo {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = sc.nextInt();

        Calendar c = Calendar.getInstance();//设置对象的年月日
        c.set(year,2,1);
        c.add(Calendar.DATE,-1);
        System.out.println(c.get(Calendar.DATE));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43860260/article/details/91431498