常用类:Date类和SimpleDateFormat类以及Calendar类

目       录

一.Date类​编辑

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

2.构造方法

3.Date类中的方法

4.Date类型与Long类型的相互转换

二. SimpleDateFormat类​编辑

1.格式化日期的类 SimpleDateFormat

2.构造方法:

3.Date类型与String日期字符串类型的转换

三.Calendar类​编辑

1.Calendar 类

2.方法:

例:键盘录入任意一个年份,获取任意一年的二月有多少天.拿Calander类面向对象来完成.


针对日期,java提供了相对应的Date类.

一.Date类

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

2.构造方法

  • 空参构造: Date date = new Date();分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)
  • 有参构造: Date date = new Date( long date);分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数也就是在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
public class  Test {
    public static void main(String[] args) {
            Date date = new Date();
            System.out.println(date.toString());  //Tue May 10 16:38:51 CST 2022

            Date date1 = new Date(1000 * 60 * 60 * 24);   
            System.out.println(date1);            //Fri Jan 02 08:00:00 CST 1970
    }
}

3.Date类中的方法

  • getTime();         获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
  • setTime();         在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
  • toString();           该类重写了toString方法,会打印出相对应格式的日期
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        Date date = new Date();
        //获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
        long time = date.getTime();
        System.out.println(time);                  //1652172389909

        //获取从历元年1970 年 1 月 1 日 00:00:00 到现在所间隔的毫秒值
        long timeMillis = System.currentTimeMillis();       //该方法属于System类,功能是i相同的!
        System.out.println(timeMillis);            //1652172389909

        //在历元年上 1970 年 1 月 1 日 00:00:00 增加对应的毫秒值
        date.setTime(1000 * 60 * 60 * 24);
        System.out.println(date);                  //Fri Jan 02 08:00:00 CST 1970

        System.out.println(date.toString());       //Fri Jan 02 08:00:00 CST 1970

    }
}

4.Date类型与Long类型的相互转换

Date类型转换为Long类型(用getTime();)

  • Date date = new Date();      long time = date.getTime();

Long类型转换为Date类型(用setTime();)

  • 方法一:Date date  = new Date(long time);
  • 方法二:Date date = new Date();     date.setTime(long time);
import java.util.Date;

public class Test {
    public static void main(String[] args) {

        //Date------>long
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);         //1652172898683

        //long------->Date
        long num = 1000 * 60 * 60 * 24;
        Date date1 = new Date(num);
        System.out.println(date1);        //Fri Jan 02 08:00:00 CST 1970
        
        Date date2 = new Date();
        date2.setTime(num);
        System.out.println(date2);        //Fri Jan 02 08:00:00 CST 1970
    }
}

 由上我们可以获取时间,但是时间的输出格式并不是咱们中国人的阅读习惯!毕竟咱们喜欢某年某月某日这样顺着的顺序!于是就出现了 SimpleDateFormat类.

二. SimpleDateFormat类

1.格式化日期的类 SimpleDateFormat

2.构造方法:

  • 空参构造: SimpleDateFormat simpleDateFormat = new SimpleDateFormat();    没有指定格式,按照默认格式输出.
  • 有参构造: SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("放入时间格式 ");  按照指定格式输出.
  • 补:这里面的格式是有要求的哈!( yyyy表示年 / MM表示月 / dd表示天 / HH表示时 / mm表示分 / ss表示秒 / E表示星期 常用的就是这些,还有很多呢,需要的话可以在api帮助文档里查查!)

3.Date类型与String日期字符串类型的转换

  • 日期 Date转换成日期字符串 String(用format方法)
  • 日期字符串 String转换成日期 Date(用parse方法解析字符串)

注意格式 和日期字符串的格式要对应,否则就解析失败.

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

public class DateAndString {
    public static void main(String[] args) throws ParseException {
        
        //日期 Date-----日期字符串 String
        Date date = new Date();
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");
        String dateStr2 = simpleDateFormat1.format(date);
        System.out.println(dateStr2);       //2022年05月10日 17时12分09秒 星期二

        //日期字符串 String----日期 Date
        String dateStr = "2000-10-10 14:30:30";
        //注意格式 和日期字符串的格式要对应,否则就解析失败。
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date1 = simpleDateFormat.parse(dateStr);    //此处会出现异常,先抛出后期学习了再进一步了解
        System.out.println(date1);        //Tue Oct 10 14:30:30 CST 2000
        
    }
}

三.Calendar类

1.Calendar 类

        Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象.它其中包含了很多这样的特定瞬间的日历字段:YEAR、MONTH、DAY_OF_MONTH、HOUR,同时也为这些日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法.一般与Date类配合起来一块使用!

2.方法:

  • getInstance();      使用默认时区和语言环境获得一个日历对象
  • get(int field);        获得给定日历字段对应的值 field通过Calendar提供的字段来拿
  • add(int field,int amount);        根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • set(int year,int month,int date)    设置日历时间 年月日
import java.util.Calendar;

public class Test {
        public static void main(String[] args) {
    
            //static Calendar getInstance () 使用默认时区和语言环境获得一个日历
            Calendar instance = Calendar.getInstance();
            System.out.println(instance);
            /*
            该对象所包含的日历字段信息:
             * java.util.GregorianCalendar[time=1651976698368,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar
             * .ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,
             * minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=4,WEEK_OF_YEAR=20,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=128,DAY_OF_WEEK=1,
             * DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=24,SECOND=58,MILLISECOND=368,ZONE_OFFSET=28800000,DST_OFFSET=0]
             * */

            int year = instance.get(Calendar.YEAR);
            int month = instance.get(Calendar.MONTH);
            int day = instance.get(Calendar.DAY_OF_MONTH);
            int hour = instance.get(Calendar.HOUR_OF_DAY);
            int minute = instance.get(Calendar.MINUTE);
            int second = instance.get(Calendar.SECOND);
            int week = instance.get(Calendar.DAY_OF_WEEK);
            System.out.println(year);           //2022
            System.out.println(month);          //4
            System.out.println(day);            //12
            System.out.println(hour);           //10
            System.out.println(minute);         //48
            System.out.println(second);         //39
            System.out.println(week);           //5


            Calendar instance1 = Calendar.getInstance();
            //设置年月日,时分秒
            instance1.set(2000, 9, 2, 14, 20, 30);
            int year1 = instance.get(Calendar.YEAR);
            System.out.println(year1);          //2022
            //可以单个设置
            instance1.set(Calendar.YEAR, 2005);
            int year2 = instance1.get(Calendar.YEAR);
            System.out.println(year2);          //2005


            Calendar instance2 = Calendar.getInstance();
            //把当前的年份,加上3年
            instance2.add(Calendar.YEAR, 3);
            int year3 = instance2.get(Calendar.YEAR);
            System.out.println(year3);          //2025
            //如果你要减去时间量,传入负数值
            instance2.add(Calendar.DAY_OF_MONTH, -5);
            int day3 = instance2.get(Calendar.DAY_OF_MONTH);
            System.out.println(day3);           //7


        }
    }

例:键盘录入任意一个年份,获取任意一年的二月有多少天.拿Calander类面向对象来完成.

public class  Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = sc.nextInt();
        Calendar instance = Calendar.getInstance();

        //设置到一年的3月1号
        instance.set(year, 2, 1);

        //减去一天,取那个天数就是二月份的天数
        instance.add(Calendar.DAY_OF_MONTH, -1);
        int day = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);
    }
}

(小编也在努力学习更多哟!以后再慢慢分享的啦!)

希望对友友们有所帮助!!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

naoguaziteng

谢谢友友的打赏!一起努力吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值