11.javaSE --- 常用API --- jdk7前时间相关类

全世界的时间,有一个统一的计算标准:

刚开始是格林尼治(格林威治)时间(Greenwich Mean Time)简称GMT,计算核心:地球自转一圈为一天,太阳直射时为正午十二点,但是根据历史记载,曾有过16分钟的大误差,使用时长长达将近130年

到了2012年1月的时候改为原子钟,原子钟利用铯原子的震动频率计算出来的时间,作为世界标准时间(UTC),铯原子每震动9192631770次=1秒(不用记忆,了解一下就行)

中国标准时间=世界标准时间+8小时

1.Data --- 时间类

        是一个jdk写好的javaBean类,用来描述时间,精确到毫秒

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

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

                常用方法:

                        1.pubic Date() --- 创建Data对象,表示当前时间

                        2.public Date(long date) --- 创建Data对象,表示指定时间

                        3.public void setTime(long time) --- 设置/修改毫秒值

                        4.public void getTime --- 获取时间对象的毫秒值

 public static void main(String[] args) {
        //需求1:打印时间原点开始一年之后的时间
        extracted();
        //需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
        extracted1();
    }

    private static void extracted1() {
        //需求2
        Random random = new Random();
        //1.创建两个data对象
        Date d1 = new Date(Math.abs(random.nextInt()));
        Date d2 = new Date(Math.abs(random.nextInt()));
        //2.获取两个对象之后才能比较,date对象不能比较
        long time1 = d1.getTime();
        long time2 = d2.getTime();
        //3.比较
        if(time1>time2){
            System.out.println("time1在后,time2在前");
        }else if(time1<time2){
            System.out.println("time1在前,time2在后");
        }else {
            System.out.println("time1和time2时间相同");
        }
    }

    private static void extracted() {
        //需求1
        //1.创建一个对象,表示时间原点
        Date d1 = new Date(0L);
        //2.获取d1的毫秒值
        long time = d1.getTime();
        //3.加上一年的毫秒值
        time = time +1000L * 60 * 60 * 24 * 365;
        //4.把计算结果放回d1中
        d1.setTime(time);
        //5.打印
        System.out.println(d1);
    }

2.SimpleDateFormat --- 格式化时间

        Data类只能创建默认的时间格式

        SimpleDateFormat类的作用:

                1.格式化:把时间格式改变

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

        构造方法:

                1.public SimpleDateFormat() --- 构造一个SimpleDateFormat,使用默认格式

                2.public SimpleDateFormat(String Pattern) --- 构造一个SimpleDateFormat,使用指定格式

        常用方法:

                1.public final String format(Date date) --- 格式化(日期对象-->字符串)

                2.public Date parse(String source) --- 解析(字符串-->日期对象)

接下来分别解释两个方法

(1)格式化

        格式化的时间形式的常用模式对应关系:

                y --- 年

                M --- 月

                d --- 日

                H --- 时(0-23)

                m --- 分

                s --- 秒

(如果需要更为详细的格式,直接在API文档中搜索此类就行,这里不再过多赘述)

下面时代码演示

    public static void main(String[] args) {
        Default();
        Point();
    }

    private static void Point() {
        //利用有参构造创建SimpleDateFormat()对象,指定格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");
        Date d = new Date(0L);
        String format = sdf.format(d);
        System.out.println(format);
    }

    private static void Default() {
        //利用空参构造创建SimpleDateFormat()对象,默认格式
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date d = new Date(0L);
        String format = sdf.format(d);
        System.out.println(format);
    }

(2)解析

   public static void main(String[] args) throws ParseException {
        //1.定义一个字符串表示时间
        String str = "2023-5-22 11:11:11";
        //2.利用空参构造创建SimpleDateFormat对象,创建的代码格式要和字符串的格式一样
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //3.解析传入的字符串为默认时间日期格式
        Date date = sdf.parse(str);
        System.out.println(date);
        //获取这个时间的毫秒值,有了毫秒值就可以进行比较,加减等操作
        System.out.println(date.getTime());

    }

3.Calendar --- 日历

代表了系统当前时间的日历对象,可以单独修改、获取时间中的年、月、日

细节:它是一个抽象类

        获取Calendar日历类对象的方法

                public static Calendar getInstance() --- 获取当前时间的日历对象

Calender是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象

        底层原理:

                1.会根据系统的不同时区来获取不同的日历对象,默认表示是当前时间

                2.把会时间中的纪元:年,月,日,时,分,秒,星期等等的都放到一个数组当中

        细节:

                1.月份:范围0~11,如果获取出来的是0,那么实际上是1月

                2.星期:在老外的眼里,星期日是一周的第一天,1(星期天),2(星期一)

常用方法:

        1.public final Date getTime() --- 获取日期对象

        2.public final setTime(Date date) --- 给日历设置日期对象

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();

        //修改日历代表时间
        Date d = new Date(0L);
        c.setTime(d);
        System.out.println(c);
    }

       

        3.public long getTimeInMillis() --- 拿到时间毫秒值

        4.public void setTimeInMillis(long millis) --- 给日历设置时间毫秒值

和以上操作差不多

        5.public int get(int field) --- 取日历中的某个字段信息

   public static void main(String[] args) {
        Calendar c = Calendar.getInstance();

        Date d = new Date(0L);
        c.setTime(d);

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int date = c.get(Calendar.DATE);
        int dateOfWeek = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year+","+month+","+date+","+GetWeek(dateOfWeek));
    }
    public static String GetWeek(int index){
        String[] arr = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
        return arr[index];
    }

        6.public void set(int field,int value) --- 修改日历的某个字段信息

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();

        Date d = new Date(0L);
        c.setTime(d);
        
        //这里将年份修改成2000年了
        c.set(Calendar.YEAR,2000);
        
        
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int date = c.get(Calendar.DATE);
        int dateOfWeek = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year+","+month+","+date+","+GetWeek(dateOfWeek));
    }
    public static String GetWeek(int index){
        String[] arr = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
        return arr[index];
    }

 

        7.public void add(int field,int amount) --- 为某个字段增加/减少指定的值

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();

        Date d = new Date(0L);
        c.setTime(d);

        //这里将年份修改成2000年了
        c.set(Calendar.YEAR,2000);


        //这里添加了一个月
        c.add(Calendar.MONTH,1);
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int date = c.get(Calendar.DATE);
        int dateOfWeek = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year+","+month+","+date+","+GetWeek(dateOfWeek));
    }
    public static String GetWeek(int index){
        String[] arr = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
        return arr[index];
    }

 注:如果添加的月份或者日期超过正常限定范围,那么就会加减一年或者月份

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值