java--System类、Date类、SimpleDateFormat类、Calendar类

System类、Date类、SimpleDateFormat类、Calendar类

System类

  System类包含一些有用的类字段和方法,并且它不能被实例化。
常用方法
public static void gc() 调用垃圾回收器
public static void exit(int status) 退出java虚拟机,0为正常退出,非0为异常退出
public static long currentTimeMillis() 获取当前时间的毫秒值
注:垃圾回收器并不是一调用就会马上执行的,因为程序中的部分代码还可能要用,因此还要等这部分代码结束。

Date类

  类Date表示特定的瞬间,精确到毫秒,它在java.util包下。
构造方法
public Date() 实例化一个日期对象
public Date(long date) 把一个long类型的毫秒值转换成一个日期对象
常用方法
public long getTime() 获取一个日期对象对象毫秒值
public void setTime(long time) 给一个日期对象设置上指定的毫秒值

SimpleDateFormat类

  可以把一个日期对象格式化成一个文本(字符串) , 也可以把一个日期字符串解析成一个日期对象,它在 java.text包下。
构造方法
public SimpleDateFormat() 使用默认的模式来创建一个SimpleDateFormat对象
public SimpleDateFormat(String pattern) 使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
常用方法
public String format(Date date) 把一个日期对象格式化成一个字符串
public Date parse(String dateStr) 把一个日期字符串解析成一个日期对象
注意:要以指定格式解析
规则定义
y
M
d 月份中的天数
h 一天中的小时数(1~12)
H 一天中的小时数(0~23)
m
s
F 月份中的星期
W 月份中的周数
w 年中的周数
D 年中的天数
E 星期中的天数
a Am/pm 标记
z 时区
Z 时区

Calendar类

  Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR ,等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法,它在java.util包下。
常用方法
public static Calendar getInstance() 使用默认时区和语言环境获得一个日历对象
public int get(int field) 获得给定日历字段对应的值,field通过Calendar提供的字段来拿

代码演示

1、获取指定的日期与今天相距多少天
import java.util.Scanner;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Day {
    public static void main(String[] args) throws ParseException {
       Scanner sc = new Scanner(System.in);
        System.out.println("请日期 格式如2010-11-25:");
        String bir = sc.nextLine();
        
        //SimpleDateFormat指定日期格式
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        
        //把按日期格式输入的字符串转变为日期类型
        Date date = format.parse(bir);
        
        //获得转变成日期格式的字符串的毫秒值
        long time = date.getTime();
                
        //获取当前的毫秒值
        long now = System.currentTimeMillis();
        
        //因为相减的是毫秒值要把它转变为天数所以要进行计算
        System.out.println("指定的日期与今天相距" + (now - time) / 1000 / 60 / 60 / 24  + "天");
    }
}

结果

请日期 格式如2010-11-25:
2018-10-31
指定的日期与今天相距2天

2、键盘录入任意一个年份,获取任意一年的二月有多少天

import java.util.Calendar;
import java.util.Scanner;
public class Day {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int y = sc.nextInt();
        //获取 Calendar 对象
        Calendar in = Calendar.getInstance();
        
        //设置年月日,设置成3月1日,因为在这里月份是从0开始的,因此月设置成2
        in.set(y,2,1);
        
        //每一个月的3月1号减去1就是二月了,这样我们就可以获得二月的天数了
        in.add(Calendar.DAY_OF_MONTH,-1);
        
        //获得二月的天数,DAY_OF_MONTH是Calendar的字段
        int i = in.get(Calendar.DAY_OF_MONTH);
        System.out.println(y+"年二月有"+i+"天");
    }
}

结果

请输入年份:
2018
2018年二月有28天

还想知道其他的Calendar字段,可以通过JDK提供的API来查看。

你可能感兴趣的:(Java,System类,Date类,Calendar类)