simpleDateFormat parse format

format得到String类型的
parse得到date类型

// 将20120324解析为:2012-03-24
private void parseTime1() {
try {
String time = "20120324";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
// SimpleDateFormat的parse(String time)方法将String转换为Date
Date date = simpleDateFormat.parse(time);
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
// SimpleDateFormat的format(Date date)方法将Date转换为String
String formattedTime = simpleDateFormat.format(date);
System.out.println("---->将" + time + "解析为:" + formattedTime);
} catch (Exception e) {

}

}

// 将20131227085009解析为:2013-12-27 08:50:09
private void parseTime2() {
try {
String time = "20131227085009";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
// SimpleDateFormat的parse(String time)方法将String转换为Date
Date date = simpleDateFormat.parse(time);
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// SimpleDateFormat的format(Date date)方法将Date转换为String
String formattedTime = simpleDateFormat.format(date);
System.out.println("---->将" + time + "解析为:" + formattedTime);
} catch (Exception e) {

}

}

simpledateformat的parse默认是弱校验的.

比如说如果你的format为"yyyy-MM-dd" ,输入的字串如果是"2013-08-28"能转化正常.

输入的如果是"2013-13-28"则会生成Date:2014-01-28.也就是顺加.

如果希望把"2013-13-28"当做错误格式.则可以设定setLenient(false);

代码如下
复制代码

public class DateTest {
public static void main(String[] args) throws ParseException {
DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
format.setLenient(false);
Date date = format.parse("33/12/2011");
System.out.println(date);
}
}

复制代码

输出结果为:

Exception in thread "main" java.text.ParseException: Unparseable date: "33/12/2011"
at java.text.DateFormat.parse(Unknown Source)
at DateTest.main(DateTest.java:11)

若设置

format.setLenient(false);

则输出结果为

Mon Jan 02 00:00:00 CST 2012
setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析。

parse 转换比较奇葩,切模棱两可
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.parse("2010/11/27");
第二段代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.parse("fuck2010/11/27");
第一段成功,第二段异常。那么我们来第三段代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.parse("2010/11/27fuck");
正常运行
parse的字符串并不是全部都用到,只是去parse从前面开始的一部分,还有被解析的长度必须比格式patten长,如下会报异常
String date = "20141201";
SimpleDateFormat sd= new SimpleDateFormat("yyyy-MM-dd");
Date d = sd.parse(date);
下面则正常
String date = "2014-12-01";
SimpleDateFormat sd= new SimpleDateFormat("yyyyMMdd");
Date d = sd.parse(date);
System.out.println(d);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值