Java SimpleDateFormat进行日期格式化

来源:互联网 发布:openwrt 网络唤醒 编辑:程序博客网 时间:2024/06/01 21:34

一,为啥要用SimpleDateFormat

众所周知,Java中的日期类是Date,然后日期默认的输出样式很奇怪哦,是这样子的:

package org.maoge.common;import java.util.Date;public class SimpleDateFormatDemo {    public static void main(String[] args) {        //默认输出格式        Date date=new Date();        System.out.println(date);//Fri Oct 27 16:56:37 CST 2017    }}

真的好像说,这是什么鬼啊,神经病啊,老板要是发现你在前端把日期显示成这样子,非要….觉得你很有个性不可。

OK,所以就很需要将日期以一种我们想要的格式显示出来

另外,有时候我们需要指定一个日期,所以也需要将字符串类型转换为Date类型,我们往往会以为是这样子的:

这里写图片描述

首先我们就注意到了new Date()方法被划上了删除线,这个就表示该方法在定义的时候被@Deprecated注解注解过了,意思是该方法过期了不建议使用了可能有问题了,反正咱知道这个方法最好不用就是了。而且,确实也报错了,所以我们也需要一种将字符串转换为日期的方法

SimpleDateFormat就是为这两种需要诞生滴,类库嘛,就是前人搭棚好乘凉,而且都是牛逼的前人。

二, 日期格式化显示

首先要记住一些标记:(注意大小写)

年yyyy月MM日dd时HH分mm秒ss毫秒SS

然后直接看例子:

package org.maoge.common;import java.text.SimpleDateFormat;import java.util.Date;public class SimpleDateFormatDemo {    public static void main(String[] args) {        //默认输出格式        Date date=new Date();        System.out.println(date);//Fri Oct 27 16:56:37 CST 2017        //日期格式化显示,首先定义格式        SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");//显示20171027格式        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");//显示2017-10-27格式        SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//显示2017-10-27 10:00:00格式        SimpleDateFormat sdf4=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");//显示2017年10月27日10时00分00秒格式        //将格式应用于日期        System.out.println(sdf1.format(date));//20171027        System.out.println(sdf2.format(date));//2017-10-27        System.out.println(sdf3.format(date));//2017-10-27 17:11:13        System.out.println(sdf4.format(date));//2017年10月27日17时11分13秒    }}

三,将字符串转换为对应日期

注意,因为可能定义的格式和实际字符串提供的格式不符合,所以会抛出异常

package org.maoge.common;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class SimpleDateFormatDemo {    public static void main(String[] args) {        //首先定义格式        SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        //按格式进行转换        String strDate1="20151010";//符合sdf1格式        String strDate2="20171027 10:00:00";//不符合格式        try {            Date date1=sdf1.parse(strDate1);            System.out.println(date1);//正常输出Sat Oct 10 00:00:00 CST 2015            Date date2=sdf2.parse(strDate2);//报错java.text.ParseException: Unparseable date: "20171027 10:00:00"            System.out.println(date2);        } catch (ParseException e) {            e.printStackTrace();        }    }}