常用API-Date、SimpleDateFormat、Calendar

JDK7前时间相关类

Date表示时间
SimpleDateFormat表示格式化时间
Calendar表示日历

1.Date时间类

Date类是JavaBean类,用来描述时间,精确到毫秒

利用空参构造创建对象,默认表示系统当前时间

利用带参构造创建对象,表示指定时间

构造方法

方法名说明
public  Date()创建Date对象,表示当前时间
public  Date(long  date)创建Date对象,表示指定时间

成员方法

方法名说明
public  void  setTime(long  time)设置/修改毫秒值
public  long  getTime()获取时间对象的毫秒值
import java.util.Date;

public class DateDemo1 {
    public static void main(String[] args) {
        //利用空参构造创建对象表示当前时间
        Date d = new Date();
        System.out.println(d);//Thu Mar 09 18:59:48 CST 2023

        //利用带参构造创建对象表示指定时间
        Date d1 = new Date(0l);
        System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970

        //setTime  修改时间
        d1.setTime(1000l);
        System.out.println(d1);//Thu Jan 01 08:00:01 CST 1970

        //getTime  获取时间对象的毫秒值
        long time = d1.getTime();
        System.out.println(time);//1000
    }
}

2.SimpleDateFormat类

格式化:可以把时间变成我们喜欢的格式

解析:把字符串表示的时间变成Date对象

构造方法说明
public  SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public  SimpleDateFormat(String  pattern)构造一个SimpleDateFormat,使用指定的格式
常用方法说明
public  final  String  format(Date  date)格式化(日期对象→字符串)

public  Date  parse(String  source)

解析(字符串→日期对象)

格式化时间常用的对应关系如下:

2023-03-09  19:50:25  →  yyyy-MM-dd  HH:mm:ss

2023年03月09日  19:50:25  →  yyyy年MM月dd日  HH:mm:ss

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

public class SimpleDateFormatDamo1 {
    public static void main(String[] args) throws ParseException {
        //使用空参构造创建一个SimpleDateFormat对象,默认格式
        SimpleDateFormat sdf1 = new SimpleDateFormat();
        Date d = new Date(0l);
        String str1 = sdf1.format(d);
        System.out.println(str1);//70-1-1 上午8:00

        使用带参构造创建一个SimpleDateFormat对象,指定格式
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String str2 = sdf2.format(d);
        System.out.println(str2);//1970年01月01日 08:00:00

        String s = "2023-01-01 01:01:01";
        //创建对象的格式要跟字符串的格式完全一致
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d1 = sdf3.parse(s);
        System.out.println(d1);//Sun Jan 01 01:01:01 CST 2023
    }
}

3.Calendar类

为什么学习Calendar类?

需求:将2022年1月1日增加一个月

  1. 定义字符串表示2022年1月1日
  2. 解析字符串得到Date对象
  3. 获取2022年1月1日的毫秒值
  4. 再增加一个月的毫秒值:1000*60*60*24*30
  5. 再格式化时间变成:2022年2月1日

Calendar类代表了系统当前时间的日历对象,可以单独修改、获取时间中的年、月、日,从而简化了上面的操作

细节:Calendar是一个抽象类,不能直接创建对象

Calendar常用方法

方法名说明
public  static  Calendar  getInstance()获取当前时间的日历对象

public  final  Date  getTime()

获取日期对象
public  final  setTime(Date  date)给日历设置日期对象
public  long  getTimeInMillis()拿到时间的毫秒值
public  void  setTimeInMillis(long  millis)给日历设置时间毫秒值
public  int  get(int  field)取日历中的某个字段信息

public  void  set(int  field,int  value)

修改日历的某个字段信息
public  void  add(int  field,int  amount)为某个字段增加/减少指定的值
import java.util.Calendar;
import java.util.Date;

public class CalendarDemo1 {
    public static void main(String[] args) {
        //获取日历对象
        //方法底层会根据不同时区来获取不同的日历对象,默认表示当前时间
        //会把时间中的纪元,年,月,日,时,分,秒,星期等等都放到一个数组当中
        Calendar c = Calendar.getInstance();
        System.out.println(c);

        //细节:月份范围0~11,如果月份是0,实际上是1月;在星期中星期日是一周的第一天
        //修改日历代表时间
        Date d = new Date(0L);
        c.setTime(d);
        System.out.println(c);

        Date time = c.getTime();
        System.out.println(time);//Thu Jan 01 08:00:00 CST 1970

        long timeInMillis = c.getTimeInMillis();
        System.out.println(timeInMillis);//0

        //0:纪元  1:年  2:月  3:一年中的第几周  4:一个月中的第几周  5:一个月中的第几天(日期) .....
        //get  获取日历中的某个字段信息
        int year = c.get(1);
        int month = c.get(2);
        int date = c.get(5);
        System.out.println(year + "," + month + "," + date);//1970,0,1

        int year1 = c.get(Calendar.YEAR);
        int month1 = c.get(Calendar.MONTH) + 1;
        int date1 = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(year1 + "," + month1 + "," + date1);//1970,1,1

        //set  修改日历的某个字段信息
        c.set(Calendar.YEAR,2023);
        c.set(Calendar.MONTH,3);
        c.set(Calendar.DAY_OF_MONTH,10);
        System.out.println(c);
        Date time1 = c.getTime();
        System.out.println(time1);//Mon Apr 10 08:00:00 CST 2023

        //add  为某个字段增加/减少指定的值
        c.add(Calendar.DAY_OF_MONTH,10);
        c.add(Calendar.MONTH,-1);
        System.out.println(c);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值