zoukankan      html  css  js  c++  java
  • Java中关于日期的处理方法

    (1)Date

    *  Date:

    *  介绍是java.util包下的Date类,这个类是负责描述日期这类数据的。

    *  Date主要是描述当前时间毫秒值对象。

    *  它中的很多方法不利于国际化,已经被废弃。

    *

    *  Date是把当前的毫秒值封装成Date对象。

    *  如何把一个毫秒值转成Date对象

    *  Date()它是把当前的时间点的毫秒值转成Date对象

    *  Date(long date) 把我们指定的一个毫秒值转成Date对象

    *  setTime(long time) 把当前的Date对象设置成指定的毫秒值对应的那个日期对象

    *

    *  如何把一个Date对象转成毫秒值

    *  Date类中有个getTime方法,可以把一个Date对象转成毫秒值

    public class DateDemo {
        public static void main(String[] args) {
            //创建Date对象
            Date d = new Date();
            d.setTime(1380000910915L);
    //        Date d = new Date(1380000910915L);
            System.out.println(d);
            System.out.println(d.toGMTString());
            System.out.println(d.toLocaleString());
            System.out.println(d.getTime());
            
        }
    }

    (2)DateFormat

    DateFormat类:

    这类位于java.text包下。

    这个类是个抽象类,这个类不能直接new对象。

    DateFormat类主要是把日期对象格式化成字符串数据

    Date对象,通过DateFormat类,可以被格式化成字符串数据"xxxx-xx-xx hh:mm:ss"

    DateFormat类还可以一个字符串数据解析成Date对象。

    "xxxx-xx-xx hh:mm:ss"  解析成Date对象

    格式化:把对象格式化成文本(字符串)

    解析:把文本(字符串)变成对象

      由于DateFormat类是抽象类,它不能创建对象,但是这个类对外提供部分的静态方法,这些方法可以获取到本类的对象。

    getDateInstance方法有重载,在获取DateFormat对象的时候可以指定风格

    DateFormat.FULL:   2014年8月22日 星期五

    DateFormat.LONG:    2014年8月22日

    DateFormat.MEDIUM: 2014-8-22  是默认风格

    DateFormat.SHORT:   14-8-22

      在使用DateFormat类中parse方法来解析一个字符串数据的时候,字符串数据给定的格式必须和获取DateFormat对象时指定的风格一致,

      这样才能够解析,否则解析失败。

    //使用DateFormat类把字符串形式的日期数据解析成Date对象
        public static void method_2() throws ParseException {
            //字符串形式的日期数据
            String time = "2014年8月22日  星期五";
            //获取DateFormat对象
            DateFormat df = DateFormat.getDateInstance( DateFormat.FULL );
            
            //解析字符串
            Date d  = df.parse(time);
            
            System.out.println(d);
            
        }
        //使用DateFormat类对日期进行格式化
        public static void method_1() {
            //获取DateFormat对象
            //DateFormat df = DateFormat.getDateInstance();
            //DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT );
            DateFormat df = DateFormat.getDateTimeInstance( DateFormat.MEDIUM,DateFormat.MEDIUM );
            //创建一个Date对象
            Date d = new Date();
            System.out.println(d);
            //对这个Date对象进行格式化
            String time = df.format(d);
            System.out.println(time);
        }

    (3)SimpleDateFormat

    当我们想按照自己指定的风格来解析字符串数据或者格式化日期 对象时,可以使用DateFormat的子类SimpleDateFormat。

    /*
         *  演示使用SimpleDateFormat格式化Date对象
         *  "xxxx年xx/xx HH时mm分ss秒"
         */
        public static void method_4() {
            //获取Date对象
            Date d = new Date();
            //获取格式化对象
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM/dd HH时mm分ss秒");
            //对日期对象进行格式化
            String time = sdf.format(d);
            System.out.println(time);
        }
        /*
         * 演示使用SimpleDateFormat类解析指定的格式数据
         * "2014/08/22"  对应的格式:"yyyy/MM/dd"
         * "2414/08/22 23:23:23"    "yyyy/MM/dd HH:mm:ss"
         */
        public static void method_3() throws ParseException {
            //字符串形式的日期数据
            String time = "2414/08/22 23:23:23";
            //创建SimpleDateFormat对象
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            //解析
            Date d = sdf.parse(time);
            System.out.println(d);
        }
    /*
     * 需求:
     *         有2个字符串形式的日期数据,需要计算它们相距多少天?
     *             "2014年09/28 23时13分01秒"
     *             "2009-02月12日 12时02分01秒"
     *     
     * 思路:
     *     要计算天数,首先需要把字符串形式的日期数据变成毫秒值,然后再通过毫秒值的相减得到时间差,然后再转成相距的天数。
     *     如何把字符串数据变成毫秒值呢?
     *         可以通过Date对象中的getTime方法,把一个Date对象转成毫秒值
     *         把字符串日期数据转成Date对象,可以使用SimpleDateFormat类完成
     */
    public class DateTest {
        public static void main(String[] args) throws ParseException {
            String s1_time = "2014年09/28 23时13分01秒";
            String s2_time = "2013-09月27日 23时13分01秒";
            
            //获取格式器
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM/dd HH时mm分ss秒");
            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM月dd日 HH时mm分ss秒");
            
            //解析字符串
            Date d1 = sdf1.parse(s1_time);
            Date d2 = sdf2.parse(s2_time);
            
            //把当前的日期对象转成毫秒值
            long time_1 = d1.getTime();
            long time_2 = d2.getTime();
            
            long day = (Math.abs(time_1 - time_2))/1000/60/60/24;
            System.out.println(day);
        }
    }

    (4)Calendar

    Calendar:

    位于java.util包下。

    这个类主要是用来描述日历数据。

    Calendar类是个抽象类可以通过getInstance方法获取其实例。

    它中定义很多静态成员变量,把日历上常见的年,月,日,时分秒,星期等数据都封装成静态的成员变量,

    可以通过Calendar类直接获取其对应的数据。

    在计算机中月份从0开始,0表示1月,1表示2月,11表示12月。

       星期也是从0开始,0表示星期日,1表示星期一

       我们获得了Calendar实例之后,就可以通过Calendar类中的get方法获取当前这个实例中封装的所有的数据。

       在使用get方法时,需要使用Calendar类本身和其中的静态成员变量结合使用。

       在Calendar类中有set方法,可以把Calendar实例中的对应的数据修改为我们想指定的具体年月日时分秒等信息

       add方法可以在指定的成员变量上修改它对应的数据

    public class CalendarDemo {
        public static void main(String[] args) {
            method_2();
        }    
        /*
         * 任意一年的2月有多少天
         *     
         * 思路:
         *     获取一个Calendar实例,然后通过set方法把当前的月份设置为3月1日。
         *     然后在使用add方法,让当前的月中的天数-1.这时再去获取当前的天数,一定是2月的最后一天。
         */
        public static void method_2() {
            //获取Calendar实例
            Calendar c = Calendar.getInstance();
            
            //使用循环来提供年份
            for( int year = 1998;year<=2100;year++ ){
                //使用set方法设置当前年月日
                c.set(year, 2, 1);
                //使用add方法让天数-1
                c.add(Calendar.DAY_OF_MONTH, -1);
                System.out.println("当前"+year+"年的2月共计有:"+c.get(Calendar.DAY_OF_MONTH));
            }
        }
        //Calendar方法演示
        public static void method_1() {
            //获取Calendar实例
            Calendar c = Calendar.getInstance();
            System.out.println(c.get(Calendar.YEAR));
            //使用set方法来设置年月日
            //c.set(2011, 12, 12);
            c.add(Calendar.YEAR, -1);
            System.out.println(c.get(Calendar.YEAR));
        }
    }
  • 相关阅读:
    volatile 关键字介绍
    hystrix 线程数,超时时间设置测试
    idea git tag 管理
    wget 认知及常用命令【转载】
    yum 认知及使用
    zuul 性能分析
    java 内存分析
    eureka-8-Eureka 的健康检查
    eureka-7-多网卡下的ip选择
    鼠标拖动div宽/高值增加与减小
  • 原文地址:https://www.cnblogs.com/driverwjd/p/3953759.html
Copyright © 2011-2022 走看看