Java-Date整合

常用的日期类
  • Date类
    许多方法都已经不推介使用了主要介绍两个方法
    1. new Date(); 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒.
    1. 对象. toLocaleString()返回描述此日期格式的本地化模式字符串
        Date date=new Date();
        System.out.println(date.toLocaleString());

运行结果
2019-4-8 19:52:09

  • DateFormat类
    该类只是抽象类,可以用无参 getInstance()方法获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。默认的是 SHORT风格.建议使用getDateTimeInstance()可以自定义参数如下图
    Java-Date整合_第1张图片
    image.png
    Date date=new Date();

    DateFormat dt= DateFormat.getInstance();时间默认是按照SHORT类型
    String time=    dt.format(date);
    System.out.println(time);
运行结果
    19-4-8 下午7:54
Date date=new Date();  获取现在时间
    时间以何种形式表示
DateFormat df=DateFormat.getDateTimeInstance(DateFormat.MEDIUM ,DateFormat.MEDIUM);
//转换成String 
String time=df.format(date);
System.out.println(time);
运行结果:
2019-4-8 19:19:48

上述过程表示了 Date类转换成String类,下面我们将String转换成Date

DateFormat df=DateFormat.getDateTimeInstance(DateFormat.MEDIUM ,DateFormat.MEDIUM);     
Date d2=df.parse("2019-4-8 19:19:48");//从给定字符串的开始解析文本,以生成一个日期。
System.out.println(d2);

运行结果 
Mon Apr 08 19:19:48 CST 2019    
  • 两者区别
    1.通过format()方法将一个 Date 格式化为日期/时间字符串。
    2.一个是通过parse() 从给定字符串的开始解析文本,以生成一个日期。
但是上面的方法只能解决java写好的格式,却不能自定义格式 比如
2019/04/08 或者2019-4-8等 这就引出新的类
  • SimpleDateFormat类
    该类是DateFormat类的直接子类。主要解决格式问题。
    Java-Date整合_第2张图片
    image.png

    放了教学方便 我们使用第 一个构造器,
    1.新建构造器 new SimpleDateFormat()
    2.设置那种自定义的样式 对象.applyPattern(pattern)
    3.将Date装换成String打印输出
        Date d=new Date();
        String pattern="yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat sdf=new SimpleDateFormat();
        sdf.applyPattern(pattern);//申请使用哪种自定义的格式
        String time=sdf.format(d); //new Date类型有两个包
        System.out.println(time);
 运行结果:
    2019-04-08 19:42:49

上述方法是将Date 转换成String类
下面是String转换成Date类

        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.parse("2019-04-08 19:42:49"));

上面我使用的第二个构造器,直接将格式传递给了构造方法,这样就不需要写applyPattern()方法.

  • Calendar类 官方推介
    此方法也是抽象类,同样也可以用 getInstance()获取。该类有自己的静态变量年月日。通过get()方法返回想要的年 月 日;
    image.png

    参数是int类型,该参数在API中有详解,下面是一个年的参数:
    image.png

    注意:在获取年月日这几个方法中,只有月是比较特殊的,现在是2019年4月cl.get(Calendar.MONDAY)得到的3月,月份是开始从0开始的,应该再加1。
Calendar cl=Calendar.getInstance();
        //获取年月日 get方法返回给定日历字段的值。
System.out.println(cl.get(Calendar.YEAR)); //获取年  在API中都是对应的静态方法
System.out.println(cl.get(Calendar.MONDAY)+1);
运行结果
2019
4

在开发中我们经常多少要算几天之后是几月几号:

  • add()
    image.png
Calendar cl=Calendar.getInstance();
cl.add(Calendar.MONDAY, 5);  //5月以后
System.out.println(cl.getTime().toLocaleString()); 
运行结果
2019-9-8 20:07:21
getTime()

例题:手动写出规定格式 然后按照格式输出。

    public static final String DEFAULT_DATE_PATTEN="yyyy-MM-dd HH:mm:ss";
    
    public static void main(String[] args) throws Exception {
    
        System.out.println(date2string(new Date(),"yyyy-MM-dd"));
        System.out.println(date2string(new Date(),null));
        System.out.println(string2date("2019-04-08 13:15:32",null));

        
    }
// 将String转换成Date类型
    private static Date string2date(String date,String patten) throws Exception {
        if( "".equals(patten)||patten==null)
        {
            patten=DEFAULT_DATE_PATTEN;
        }
        SimpleDateFormat sdf=new SimpleDateFormat(patten);
        Date d= sdf.parse("2019-04-08 13:21:31".toString());
        return d;
        
    }
    
//将Date类型转换成String
    private static String date2string(Date date,String patten) {
        
        SimpleDateFormat sdf=new SimpleDateFormat();
        if( "".equals(patten)||patten==null)
        {
            patten=DEFAULT_DATE_PATTEN;
        }
        sdf.applyPattern(patten);
        return  sdf.format(date);
        
    }

你可能感兴趣的:(Java-Date整合)