Date、SimpleDateFormat、Calendar的基本使用

1、Date

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

注:由于我们处于东八区,所以我们的基准时间为1970年1月1日0分0秒

1.1 Date的构造函数
Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒)

Date(long date) 分配一个 Date 对象,表示自从标准基准时间起指定时间的毫秒数

标准基准时间:称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00

常用方法:

public static void main(String[] args) {
        //日期类型:
        //类 Date 表示特定的瞬间,精确到毫秒
        Date date1=new Date();//获取当前的时间
        System.out.println(date1);
}

 2、SimpleDateFormat

SimpleDateFormat 常用于格式化和解析日期

日期和时间格式由日期和时间模式字符串指定,字母与日期时间的对应关系如下:

 

 常用构造函数

SimpleDateFormat() 用默认模式的日期格式构造 SimpleDateFormat
SimpleDateFormat(String pattern) 用给定模式的日期格式构造 SimpleDateForma

练习:

package cn.cxy.date;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/*本类用于测试SimpleDateFormat类*/
public class TestSDF {
    public static void main(String[] args) throws ParseException {
        /*01 格式化:从 Date 到 String*/
        //1.创建日期类对象,包含当前的时间
        Date d = new Date();
        //2.创建日期转换工具类的对象,此时使用的是无参构造
        //SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        //3.通过刚刚创建好的工具类对象转换日期的格式
        String s = sdf2.format(d);
        //4.打印转换好的时间字符串:
        //默认时间格式:21-9-23 下午11:18
        //自定义时间格式:2021/09/23 10:21:39
        System.out.println(s);
        
        /*解析:从String到 Date*/
        //1.定义一个时间字符串
        String s2 = "2021/9/23 22:24:03";
        //报错:ParseException解析异常: Unparseable date不可分割日期: "2021/9/23 22:24:03"
        //SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        //2.利用含参构造创建工具类对象,指定格式,注意必须是规定格式,否则会抛出异常
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        //3.利用工具类对象对日期进行转换
        Date d2= sdf3.parse(s2);
        //4.打印转换好的日期
        System.out.println(d2);//Thu Sep 23 22:24:03 CST 2021
 
    }
}

 3、Calendar日历类

概念
Calendar 类是一个抽象类,不可直接实例化,但是它有一个直接已知子类GregorianCalendar
它为特定瞬间与还有比如年月日等日历字段之间的转换和操作提供了一些方法

常用方法
Calendar提供了一个方法getInstance()用于获取Calendar对象,它的日历字段就是当前的日期
int get(int field) 返回给定日历字段的值
abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
 

package demo;
 
import java.util.Calendar;
import java.util.Date;
 
public class Demo4 {
    public static void main(String[] args) {
        // Calendar 的 getInstance()方法返回一个Calendar对象
        Calendar calendar=Calendar.getInstance();
        //获取当前时间
        Date date=calendar.getTime();
        System.out.println(date);
        //可以获取当前时间任何你想要获得的信息
        int year=calendar.get(Calendar.YEAR);//获取当前时间的年份
        System.out.println("年份: "+year);
        int month=calendar . get (Calendar. MONTH);
 
        System. out . println("月份: "+month+1);
 
        int dayOfYear=calendar. get(Calendar.DAY_OF_YEAR);
 
        System. out. println("本年第"+dayOfYear);
 
      // CaLendar 可以通过get方法指定字段值来 获取当前时间的一-些信息
        System.out.println("..................................");
     //指定年月日、日分秒月份0-11表示1-12月
 
        calendar .set( 2022,11, 25,  23, 59,60);//获取指定的时间
 
        Date date1=calendar . getTime();
 
        System. out. println(date1);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值