JavaString与Date类型互转

  • Post author:
  • Post category:java


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);



版权声明:本文为dongyuxu342719原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。