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来查看。
还没有评论,来说两句吧...