JAVASE之日期操作

java日期操作~~

java的时间用Date类表示

这里写图片描述

这里写图片描述

SimpleDateFormat

日期与字符串相互转

这里写图片描述
这里写图片描述

016-09-06 09:30:25
yyyy-MM-dd HH:mm:ss

类似于正则,让他以这些字符为标准转换

将Date转换为 2016-09-06 09:30:25 这种日期:
如代码:

public static void main(String[] args) {
        // TODO Auto-generated method stub

        Date date = new Date();
        //输出Date默认的toString方法的返回值
        System.out.println(date);
        /*
         * 希望输出的格式是:
         * 2016-09-06 09:30:25
         * yyyy-MM-dd HH:mm:ss
         */
        //先创建个字符串是用来定义日期格式
        String dateformat ="yyyy-MM-dd HH:mm:ss E a";
        //创建个SimpleDaeFormat 对象,传入日期格式
        SimpleDateFormat sad = new SimpleDateFormat(dateformat);
        //对象有个format方法,传入创建的时间对象,返回字符串
        String str = sad.format(date);
        System.out.println(str);

    }

这里写图片描述

将 2016-09-06 09:30:25 日期装换为 Date对象

代码:

public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub
        //要转换为Date的字符串
        String str = "2008-08-08 20:08:08";
        //创建个匹配要转换字符串时间格式的字符串
        String dateformat = "yyyy-MM-dd HH:mm:ss";
        //SimpleDateFormat 用传入的字符串时间格式解析字符串,然后创建对象
        SimpleDateFormat asd = new SimpleDateFormat(dateformat);
        //调用SimpleDateFormat的方法parse转换为Date,那么就要创建Date对象
        //会产生异常~~抛出
        Date date =  asd.parse(str);
        System.out.println(date);

    }

这里写图片描述

例子:输入生日计算活了多少天:

代码:

public static void main(String[] args) throws ParseException {
        // TODO Auto-generated method stub
        /*
         * 输入一个生日,输出到今天为止一共活了多少天
         * 输入生日,转为Date,获取系统的Date,获取他们的毫秒值
         * 然后求差,用该值除以一天的毫秒值,得出天数
         * 
         */
        System.out.println("请输入你的生日");
        System.out.println("格式如:2016-09-06");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        //创建日期格式字符串
        String dateformat = "yyyy-MM-dd";
        SimpleDateFormat asd = new SimpleDateFormat(dateformat);
        //将输入的生日转换为Date对象
        Date srdate = asd.parse(input);
        long srss = srdate.getTime();
        //获取系统现在时间

        Date xzdate = new Date();
        long xzss = xzdate.getTime();
        //计算差
        long scdate = (xzss-srss)/(24*60*60*1000);

        System.out.println("骚年,你已经活了:"+scdate+"天");
    }

Calender

本身是抽象类
操作时间 计算时间

这里写图片描述

public static void main(String[] args) {
        // TODO Auto-generated method stub

        //创建一个Calendar,获取的是阳历
        Calendar calendar = Calendar.getInstance();

        System.out.println(calendar);
        //calendar的getTime获取的是Date
        Date date = calendar.getTime();
        System.out.println(date);
        //用SimpleDateForm来定义日期格式
        String dateform = "yyyy-MM-dd";
        SimpleDateFormat asd = new SimpleDateFormat(dateform);
        //将日期定义为指定格式
        String str=  asd.format(date);
        System.out.println(str);

    }



让Calendar表示的是当前Date所表示的时间

    public static void main(String[] args) {
        //让Calendar表示的是当前Date所表示的时间
        Date date = new Date();     
        Calendar calendar = Calendar.getInstance();     
        calendar.setTime(date); 
    }

Calendar设置时间

public static void main(String[] args) {
        // TODO Auto-generated method stub

        Calendar calendar = Calendar.getInstance();

        /*
         * 希望表示2008-08-30 10:22:33
         * 
         */
        calendar.set(Calendar.YEAR, 2008);
        //!!Calendar的月份 是从0开始的!!!8月就写7或者Calendar.AUGUST
        calendar.set(Calendar.MONTH, Calendar.AUGUST);
        calendar.set(Calendar.DATE, 30);
        calendar.set(Calendar.HOUR_OF_DAY, 10);
        calendar.set(Calendar.MINUTE, 22);
        calendar.set(Calendar.SECOND,33);
        //要将calendar要转换为Date,不然不容易看
        Date date = calendar.getTime();
        System.out.println(date);
    }

获取Calendar的时间

注意星期,月份的问题。

public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();
        //获取年
        int year = calendar.get(Calendar.YEAR);
        //获取月,因为月是从0开始的,所以要加1
        int month = calendar.get(Calendar.MONTH)+1;
        int date = calendar.get(Calendar.DATE);
        System.out.println(year+"-"+month+"-"+date);
        int w = calendar.get(Calendar.DAY_OF_WEEK);
        //星期天返回的是1,不是的话就减1返回
        System.out.println("星期:"+(w==1?7:w-1)); 
    }

用Calendar计算时间

public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();
        //看15天以后,想做减法的话加负数
        //加天的话,要是一年中天,因为有可能超过月份,星期等
        calendar.add(Calendar.DAY_OF_YEAR, 15);
        Date date = calendar.getTime();
        System.out.println(date);

    }

这里写图片描述

计算三个月后的十天后的周三是几号

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

        calendar.add(Calendar.MONTH, 3);
        calendar.add(Calendar.DAY_OF_YEAR, 10);
        //设置周三,那么就是周三那天了,0是周天那么周三就是4
        calendar.set(Calendar.DAY_OF_WEEK,4);
        System.out.println(calendar.getTime());
    }

这里写图片描述

获取某个时间分量所允许的最大值

public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //这个月总共多少天,当前月所运行的最大天数,这个方法,传什么返回什么所允许的最
        int days= calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(days);
    }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值