• Java中的日期表示类


    一、概述

        Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了;想用Calendar类代替Date类,然而Calendar类也是不尽如人意。下面简单介绍下Java中的日期转换方法。

    1、Date类

       Date类的构造方法有两个,public Date()和public Date(long date).可以用来表示当前日期,或者将长整型数据表示成时间。第一个勉强可以用下,用来表示当前时间,第二个试问谁能记得住那么一大串的时间值呢?看下示例吧:

           //参数表示1970-01-01 00:00:00到指定时间的毫秒数
            Date date1 = new Date(14686531L);
            System.out.println(date1);
            Date date2= new Date();
            System.out.println(date2);

    输出的日期为:

    Thu Jan 01 12:04:46 GMT+08:00 1970
    Sat Apr 20 08:43:34 GMT+08:00 2019

    其中第一个参数表示:1970-01-01 00:00:00到指定时间的毫秒数

    第二个表示:当前时间。

       使用Date将字符串转换为日期格式:Date的年月日是在1900-01的基础上来累加。因此,要现将字符串中的年月日切分出来,然后再使用Date表示。

       示例如下:

            //2. 出生日期
            //2000-12-16->转化为date对象
            //在1900-01的基础上来累加
            String str = "2000-12-16";
            //现将年月日切分出来
            String[] arr = str.split("-");
            int year = Integer.parseInt(arr[0]) - 1900;
            int month = Integer.parseInt(arr[1]) - 1;
            int day = Integer.parseInt(arr[2]);
            //Date date = new Date(2000,12,16);
            //如果某个类、方法、属性出现了删除线,并且有提示需要进行警告压制
            //压制内容deprecation,表示这个类、方法、属性已过时
            //已过时:指当前代码依然可以用,但是不推荐使用,在后续迭代版本中可能会被抛弃
            @SuppressWarnings("deprecation")
            Date date = new Date(year, month, day);
            System.out.println(date);

    二、使用DateFormat类的子类(SimpleDateFormat类)表示

        因为使用Date类与字符串时间相互转化十分困难,因此,考虑Date类的其他子类。DateFormat是日期/时间格式化子类的抽象类,它与以语言无关的方式格式化并解析日期或时间,是抽象类,所以使用其子类SimpleDateFormat实现日期和字符串的相互转换。

    public static void main(String[] args) throws Exception {
    
            // 2000-12-16
            // 2000/12/16
            // 2000.12.16
            // 12/16/2000
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            // 将字符串转化为日期
            Date date = sdf.parse("2000-12-16 16:52:39");
            System.out.println(date);
    
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            String str = sdf.format(date);
            System.out.println(str);
        }

    三、Calendar类

        java开发Calendar的目的是为了替换Date类,但是,该类设计的也是相当失败。仅有几个方法还值得使用一下。Calendar类是一个抽象类,不过提供了一个getInstance方法可以生成一个实例对象。通过该对象可以设置当前时间和获取日期。

    public static void main(String[] args) {
    
            // 创建Calendar对象
            Calendar c = Calendar.getInstance();
            System.out.println(c);
    
            // 获取Hour属性的值
            int hour = c.get(Calendar.HOUR);
            System.out.println(hour);
    
            c.set(Calendar.HOUR, 12);
    
            // 获取Date对象的方法
            Date d = c.getTime();
            System.out.println(d);
        }
  • 相关阅读:
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xef in position 99: invalid continuation byte
    Java的内存机制
    sort
    ajax()函数传值中文乱码解决方法介绍
    三种实现Ajax的方式
    找到div下的第一个ul
    POI 单元格
    js对字符串进行编码方法总结
    相对路径和绝对路径的区别,java获取项目访问路径的方法
    sql存储过程几个简单例子
  • 原文地址:https://www.cnblogs.com/chhyan-dream/p/10739860.html
Copyright © 2020-2023  润新知