JAVA之常见类(二)

JAVA之常见类(二)

六、Date类

1.概述

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

2.构造方法

Date()
          分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date)
          分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

3.常用方法

 long getTime()
          返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
 void setTime(long time)
          设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

七、SimpleDateFormat类

1.概述

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

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

2.构造方法 

SimpleDateFormat()
          用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

3.常用方法

 String format(Date date)
          将一个 Date 格式化为日期/时间字符串。
 Date parse(String source)
          从给定字符串的开始解析文本,以生成一个日期。

4.案例

y Year 1996; 96
M 年中的月份 Month July; Jul; 07
D 年中的天数 Number 189
d 月份中的天数 Number 10
H 一天中的小时数(0-23) Number 0
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
Date d = new Date();							//获取当前时间对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//创建日期格式化类对象
System.out.println(sdf.format(d));				//将日期对象转换为字符串
//2018/12/01 19:58:38

String str = "2000年08月08日 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = sdf.parse(str);						//将时间字符串转换成日期对象
System.out.println(d);
//Tue Aug 08 08:08:08 CST 2000

需求:算一下你来到这个世界多少天?

//1,将生日字符串和今天字符串存在String类型的变量中
String birthday = "1983年07月08日";
String today = "2088年6月6日";
//2,定义日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
//3,将日期字符串转换成日期对象
Date d1 = sdf.parse(birthday);
Date d2 = sdf.parse(today);
//4,通过日期对象后期时间毫秒值
long time = d2.getTime() - d1.getTime();
//5,将两个时间毫秒值相减除以1000,再除以60,再除以60,再除以24得到天
System.out.println(time / 1000 / 60 / 60 / 24 );
//38320

八、Calendar类

1.概述

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

2.常用方法

static Calendar getInstance()
          使用默认时区和语言环境获得一个日历。
 int get(int field)
          返回给定日历字段的值。
abstract  void add(int field, int amount)
          根据日历的规则,为给定的日历字段添加或减去指定的时间量。
 void set(int year, int month, int date)
          设置日历字段 YEARMONTHDAY_OF_MONTH 的值。
Calendar c = Calendar.getInstance();		//父类引用指向子类对象
//System.out.println(c);		//证明重写了toString方法打印了对象中所有的属性
System.out.println(c.get(Calendar.YEAR));  	//通过字段获取对应的值
System.out.println(c.get(Calendar.MONTH));
Calendar c = Calendar.getInstance();			//父类引用指向子类对象
//System.out.println(c);
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) + "年" + getNum((c.get(Calendar.MONTH)+1)) 
+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));

/*2018
*11
*1
*7
2018年12月01日星期六
*/

//如果是个数数字前面补0
public static String getNum(int num) {
	return num > 9 ? "" + num : "0" + num;
}

//将星期存储表中进行查表
public static String getWeek(int week) {
	String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
	return arr[week];
}

注意:

1.月份从0开始计数

2.周日为第一天,周六为最后一天即第七天

Calendar c = Calendar.getInstance();			//父类引用指向子类对象
c.set(1998, 7, 9);
System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1)) 
+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));

//1998年07月09日星期四

3.案例

需求:键盘录入任意一个年份,判断该年是闰年还是平年
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份,判断该年份是闰年还是平年:");
String line = sc.nextLine();				//录入数字字符串
int year = Integer.parseInt(line);			//将数字字符串转换成数字
boolean b = getYear(year);
System.out.println(b);

private static boolean getYear(int year) {
		//2,创建Calendar c = Calendar.getInstance();
		Calendar c = Calendar.getInstance();
		//设置为那一年的3月1日
		c.set(year, 2, 1);
		//将日向前减去1
		c.add(Calendar.DAY_OF_MONTH, -1);
		//判断是否是29天
		return c.get(Calendar.DAY_OF_MONTH) == 29;
	}

猜你喜欢

转载自blog.csdn.net/qq_40298054/article/details/84677769
今日推荐