JavaString与Date类型互转

1、转换方法

//String转换为Date

String strDate="2017-07-19 08:29:00";
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
date=sdf1.parse(strDate); 

 //Date转换为String 

 SimpleDateFormat sdf2=new SimpleDateFormat("yyyyMMdd hh:mm:ss");
String trans=sdf2.format(date);


2、注意事项

SimpleDateFormat类的parse方法参数字符串的格式一定要和new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");构造函数的入参格式相同,不然会报异常

parse方法源码如下:

public Date parse(String source) throws ParseException
    {
        ParsePosition pos = new ParsePosition(0);
        Date result = parse(source, pos);
        if (pos.index == 0)
            throw new ParseException("Unparseable date: \"" + source + "\"" ,
                pos.errorIndex);
        return result;
    }

format方法不接受字符串,但是接受Date类型和数字,将字符串先转换了数字再格式化。

String strDate="2017-07-19 08:29:00";
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try
        {
            Long lo=sdf1.parse(strDate).getTime();
            SimpleDateFormat sdf3=new SimpleDateFormat("yyyyMMdd hh:mm:ss");
            sdf3.format(lo);
        }
        catch (ParseException e1)
        {
            e1.printStackTrace();
        }

3、延伸用法:获取当前时间的前一天以及23:59:59的用法

//获取当前时间的前一个月

Calendar s=Calendar.getInstance();
        s.add(Calendar.MONTH,-1);
        SimpleDateFormat format=new SimpleDateFormat("yyyyMM");
        String month=format.format(s.getTime());

//获取前一天的开始和结束时间

Date now=new Date();
        Calendar c=new GregorianCalendar();
        c.setTime(now);
        System.out.println(c.getTime());
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        c.add(Calendar.MILLISECOND, -1);
        System.out.println(c.getTime());
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String startTime=sdf.format(c.getTime());
        System.out.println("startTime:"+startTime);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        String endTime=sdf.format(c.getTime());
        System.out.println("endTime:"+endTime);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值