JAVA基础-日期相关类

Date类

构造函数
Date() 创建一个Date对象,表示当前这一刻的时间
Date(long date) 创建一个Date对象,表示:从1970年1月1日0时0分0秒 后 过了date毫秒 后的那一刻

常用方法
long getTime() 获取的是当前Date对象表示的时间与1970年1月1日0时0分0秒之间的毫秒差
void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点

import java.util.Date;

public class DateDemo {
	public static void main(String[] args) {
		// Date() 创建一个Date对象,表示当前时间
		Date d1 = new Date();
		System.out.println(d1);
		// Date(long date) 创建一个Date对象,表示:从1970年1月1日0时0分0秒 后 过了date毫秒 后的那一刻。
		Date d2 = new Date(0);
		System.out.println(d2);
		// 表示1个小时后
		Date d3 = new Date(1000 * 60 * 60);
		System.out.println(d3);
		// 表示1天后
		Date d4 = new Date(1000 * 60 * 60 * 24);
		System.out.println(d4);
		// 表示1个月后
		Date d5 = new Date(1000 * 60 * 60 * 24 * 31L);
		System.out.println(d5);
		// long getTime() 获取的是当前Date对象表示的时间与1970年1月1日0时0分0秒之间的毫秒差
		Date d6 = new Date();
		System.out.println(d6.getTime());
		System.out.println(System.currentTimeMillis());
		// void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
		// 表示1970的2小时后
		// 方式1:构造函数
		Date d7 = new Date(1000 * 60 * 60 * 2);
		System.out.println(d7);// Thu Jan 01 10:00:00 CST 1970
		// 方式2:setTime()
		Date d8 = new Date();
		d8.setTime(1000 * 60 * 60 * 2);
		System.out.println(d8);// Thu Jan 01 10:00:00 CST 1970
	}
}

运行结果:

Tue Feb 19 20:35:00 CST 2019
Thu Jan 01 08:00:00 CST 1970
Thu Jan 01 09:00:00 CST 1970
Fri Jan 02 08:00:00 CST 1970
Sun Feb 01 08:00:00 CST 1970
1550579700808
1550579700808
Thu Jan 01 10:00:00 CST 1970
Thu Jan 01 10:00:00 CST 1970

Dateformat

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

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

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

public class DateFormatDemo {
	public static void main(String[] args) throws ParseException {
		method_01();
		method_02();
                method_03();
	}

        //日期的解析
	public static void method_03() throws ParseException {
		// 键盘录入用户的生日
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的生日,格式为:1900-01-01");
		String line = sc.nextLine();
		// 创建日期格式化器
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		// 解析
		Date birthday = sdf.parse(line);
		System.out.println(birthday);// Tue Sep 17 00:00:00 CST 1996
	}
	
	// 自定义模式格式化
	public static void method_02() {
		// SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
		// 创建日期格式化器
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日,E HH:mm:ss");
		// 创建日期对象
		Date date = new Date();
		// 格式化
		String str = sdf.format(date);
		System.out.println(str);// 2016年12月04日,星期日 10:38:40
	}
	//默认模式格式化
	public static void method_01() {
		// SimpleDateFormat()用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
		// 创建日期格式化器
		SimpleDateFormat sdf = new SimpleDateFormat();
		// 创建日期
		Date date = new Date();
		// 格式化
		String str = sdf.format(date);
		System.out.println(str);// 16-12-4 上午10:29
	}
}

运行结果:

19-2-19 下午8:47
2019年02月19日,星期二 20:47:54
请输入您的生日,格式为:1900-01-01
1996-03-13
Wed Mar 13 00:00:00 CST 1996

Calendar(日历)

获取Calendar对象:
Calendar.getInstance()
获取日历的字段
int get(int field)
修改字段
set(int field , int value)
set(int year, int month, int day)
add(int field, int amount)
注意事项:
Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。
而 Calendar.DAY_OF_WEEK 定义和值如下:
Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7

import java.util.Calendar;

public class CalendarDemo {
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();
		// 获取年
		int year = c.get(Calendar.YEAR);
		// 获取月
		int month = c.get(Calendar.MONTH)+1;
		// 获取日
		int date = c.get(Calendar.DAY_OF_MONTH);
		// 获取小时
		int hour = c.get(Calendar.HOUR_OF_DAY);
		// 获取分
		int minute = c.get(Calendar.MINUTE);
		// 获取秒
		int second = c.get(Calendar.SECOND);
		System.out.println("现在是"+year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒");
	}
}

运行结果:

现在是2019年2月19日20时59分43秒

应用实例

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

/*
* 计算任意一个年的2月份有几天
* 需求:用户任意输入一年,我们判断2月有几天
* 方式1:判断是否是闰年,如果是,那就29天。否则28天
* 方式2:我们把日历调整到用户指定年的3月1日,然后把天字段-1.获取此时的天字段
* 思路:
* A:创建键盘录入对象
* B:录入用户输入的年
* C:创建日历字段
* D:把日历设置到指定年的3月1日
* E:把日历的天字段-1
* F:获取天字段的值,一定是2月的最后一天
*/
public class CalendarDemo03 {
	public static void main(String[] args) {
		// A:创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		// B:录入用户输入的年
		System.out.println("请输入任意的年:比如1990");
		String line = sc.nextLine();
		int year = Integer.parseInt(line);
		// C:创建日历字段
		Calendar c = Calendar.getInstance();
		// D:把日历设置到指定年的3月1日
		c.set(year, 2, 1);
		// E:把日历的天字段-1
		c.add(Calendar.DAY_OF_MONTH, -1);
		// F:获取天字段的值,一定是2月的最后一天
		int day = c.get(Calendar.DAY_OF_MONTH);
		System.out.println(year + "年的2月分共有" + day + "天");
		sc.close();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_36154832/article/details/87732067