Java SE(入门)

一、Java 日期时间

1、概述
  1. 强调: java的日期操作是通过3个类完成的
  2. 包含
    (1) Date: 每个实例表示一个确切的时间点
    (2) SimpleDateFormat: 根据一个给定的日期格式将String与Date相互转换
    (3) Calendar: 其方法对时间分量进行运算
2、Date
  1. 毫秒数: 内部维护一个long值,记录1970年1月1日 00:00:00到确切时间点所经过的毫秒值
  2. 方法: 由于Date存在设计缺陷(千年虫,时区),大部分方法已过时,不建议使用
    (1) Date() : 获得当前系统时间
    (2) getTime():获得内部毫秒数
    (3) setTime():设置内部毫秒数
  3. 实例
// 使用默认的构造方法表示前系统时间
  Date date = new Date();
  
// Wed Jul 24 23:33:31 CST 2019
  System.out.println(date);
  
// 获取内部维护的long值		
  long time = date.getTime();
  
// 1564068811517
  System.out.println(time);

// 明天这一刻的毫秒值
  time += 1000*60*60*24;

// 设置一个long值,让Date表示该long值所表示的时间 
  date.setTime(time);

// Thu Jul 25 23:33:31 CST 2019
  System.out.println(date);
3、SimpleDateFormat
  1. 日期格式字符串
    (1) 类似于正则表达式的字符串
    (2) y: 表示年,通常是yyyy或yy
    (3) M: 表示月,通常是MM或M
    (4) d: 表示天,通常是dd
    (5) H: 表示时,通常是HH或者hh
    (6) m: 表示分,通常是mm
    (7) s: 表示秒,通常是ss

  2. Date 转 String
    (1) 方法: format(Date: date)
    (2) 实例:

Date now = new Date();
// 声明日期格式字符串
String format = "yyyy-MM-dd HH:mm:ss";

// 实例化格式对象
SimpleDateFormat sdf = new SimpleDateFormat(format);

// 调用转换方法
String str = sdf.format(now);

// 2019-07-28 13:56:37
System.out.println(str);
  1. String 转 Date
    (1) 方法: parse(String: str)
    (2) 注意: 这个方法要求捕获异常
    (2) 实例
String str = "2008年8月21日 23:44:21";
String format = "yyyy年MM月dd日 HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);

// 调用转换方法
Date date = sdf.parse(str);

// Thu Aug 21 23:44:21 CST 2008
System.out.println(date);
4、Calendar
  1. 概述
    (1) Calendar是一个抽象类,用于封装日历信息
    (2) Calendar子类针对不同国家的日历系统,默认阳历

  2. Calendar对象
    (1) 通常通过Calendar的静态方法getInstance获得Calendar对象
    (2) getInstance根据系统的地域信息返回不同Calendar类的实现
    (2) Calendar内部表示一个时间,默认创建出来的Calendar表示当前系统时间

Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
  1. Calendar 与 Date相互转换
    (1) Calendar 转 Date: getTime()
    (2) Date 转 Calendar: setTime(Date: date)
Calendar -> Date
Calendar c1 = Calendar.getInstance();
// 返回一个Date对象
Date d1 = c1.getTime();
System.out.println(d1);
Date -> Calendar
Date d2 = new Date();
Calendar c2 = Calendar.getInstance();

// 把Date转换为Calendar 
c2.setTime(d2);
  1. 设置时间分量
    (1) 方法: set(int field, int value)
    (2) 实例:
Calendar calendar = Calendar.getInstance();

// 设置年
calendar.set(Calendar.YEAR, 2008);

// 设置月, 月份从0开始,0表示1月,11表示12月
calendar.set(Calendar.MONTH,7);

// 设置天
   // DATE 通常说的"号"
   // DAY_OF_MONTH  通常说的"号"
   // DAY_OF_YEAR   年中的第几天
   // DAY_OF_WEEK  星期几,1表示周日,2表示周一
calendar.set(Calendar.DAY_OF_MONTH, 8);

// 设置时
calendar.set(Calendar.HOUR_OF_DAY, 17);

// 设置分
calendar.set(Calendar.MINUTE, 22);

// 设置秒
calendar.set(Calendar.SECOND,55);

Date date = calendar.getTime();
System.out.println(date);
  1. 获取时间分量
    (1) 方法: get(int field)
    (2) 获取最大值: getActualMaximum(int field)
    (3) 实例:
Calendar calendar = Calendar.getInstance();

// 获取年
int year = calendar.get(Calendar.YEAR);

// 获取月
int month = calendar.get(Calendar.MONTH)+1;

// 获取天 DATE 与 DAY_OF_MONTH功能一致
int day = calendar.get(Calendar.DATE);

// 获取时
int hour = calendar.get(Calendar.HOUR_OF_DAY);

// 设置分
int minute = calendar.get(Calendar.MINUTE);

// 设置秒
int second = calendar.get(Calendar.SECOND);

// 获取星期几
int dow = calendar.get(Calendar.DAY_OF_WEEK);

// 获取今天是今年第几天
int doy = calendar.get(Calendar.DAY_OF_YEAR);

// 获取当月一共多少天
int days = calendar.getActualMaximum(DAY_OF_MONTH)
  1. 时间分量的运算
    (1) 方法: add(int field, int value)
    (2) 注意: value为正数时做加法,为负数时做减法
    (3) 实例:
Calendar calendar = Calendar.getInstance();		
//加3年
calendar.add(Calendar.YEAR, 3);

//加2个月
calendar.add(Calendar.MONTH, 2);
	
//减去30天 对天的加减只用DAY_OF_YEAR
calendar.add(Calendar.DAY_OF_YEAR, -30);
System.out.println(calendar.getTime());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值