【Java】时间日期相关类 Date 、Calendar

Object类:
a.equal(obj) :比较的是地址值
Object.equal(a,b):包容性较强 // a可能为空值

Date类:
时间原点:1970-1-1 00:00:00(英国格林威治)
->中国 1970-1-1 08:00:00

1、
打印当前系统时间距离时间原点经过了多少毫秒:

Date d = new Date();
System.out.println(d3.getTime());
System.out.println(System.currentTimeMillis());
// 两种方法等效

2、
毫秒与日期转换:
1天=24x60x60=86400秒=86400*1000=86400000毫秒

Date d1 = new Date();  // new Date(date) 当前日期
System.out.println(d1);
	
System.out.println(System.currentTimeMillis());//当前时间毫秒1597592188066
Date d2 = new Date(1597592188066L);
System.out.println(d2); // new Date(long date) 将毫秒转换为日期

DateFormat:
作用:格式化(Date日期->文本)、解析(文本->Date日期)
模式:(区分大小写)
y 年、M 月、d 日、H 时、m 分、s 秒

1、使用DateFormat类中的方法format,把日期格式转换为文本
(若new SimpleDateFormat()括号里面不写,则默认格式为:2020/8/17 下午6:57 也可以自行确定格式)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date d = new Date();
String text = sdf.format(d);
System.out.println(text);

2、使用DateFormat中的方法parse方法,把文本解析为Date日期

public class Test {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new 	SimpleDateFormat();
		String s = sdf.format(new Date());
		System.out.println(s);
		// 2020/8/17 下午7:11
		Date date = sdf.parse(s);
		System.out.println(date);
		//Mon Aug 17 19:11:00 CST 2020

	}

}

例题:计算一个人出生的天数

		// 1.获取String文本格式的出生日期
		Scanner input = new Scanner(System.in);
		System.out.println("请输入您的出生日期,格式为: yyyy-MM-dd");
		String bir = input.next();
		// 2.将String文本类型的出生日期转换为Date类型
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = sdf.parse(bir);
		// 3.当前时间的毫秒-出生日期的毫秒  (只有毫秒才能加减)
		long day = System.currentTimeMillis() - date.getTime();
		// 4.将毫秒转换为天
		System.out.println(day/1000/60/60/24);

请输入您的出生日期,格式为: yyyy-MM-dd
2000-04-18
742

Calendar类的成员方法:
1、返回给定日历字段的值

		Calendar c = Calendar.getInstance(); // 体现了多态,因为calendar是抽象类
		//获取年
		int year = c.get(Calendar.YEAR);
		System.out.println(year);
		
		//获取月,西方的月份是 0-11,所以+1
		int month = c.get(Calendar.MONTH+1);  
		System.out.println(month);
		
		//获取某日
		int day  = c.get(Calendar.DATE);
		System.out.println(day);
		int day1 = c.get(Calendar.DAY_OF_MONTH);
		System.out.println(day1);

2、将给定的日历字段设置为定值

		c.set(Calendar.YEAR, 2088);
		c.set(Calendar.MONTH, 8); ///九月
		c.set(Calendar.DATE, 8);
		c.set(2088, 8, 8);

3、根据日历的规则,为给定的日历字段添加或减去指定的时间量

c.add(Calendar.YEAR, 2); //增加两年
c.add(Calendar.MONTH, -3);//减少三个月

4、将日历转换为日期

		Calendar c2 = Calendar.getInstance();
		Date date = c2.getTime();
		System.out.println(date);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值