[Java 常用类库]:DateUtils(严格日期转换通用类)(一)

2014-11-24 11:07:22 · 作者: · 浏览: 4
该类库由于设置lenient为false,所以执行的是严格的日期转换(判断日期字符串是否正确我通过会严格转换日期捕获异常来判断)。
例如:
2013-2-30这样的日期,在不严格(宽松)的条件下,可以转换成功。
转换结果为:
2013-3-2 0:00:00
在严格的情况下就会报错:
Exception in thread "main" java.text.ParseException: Unparseable date: "2013-2-30"
at java.text.DateFormat.parse(DateFormat.java:337)
at com.test.TestDate.main(TestDate.java:19)
该类库提供了多种方法,代码如下:
[java]
/**
* 严格的日期转换setLenient(false);
* setLenient
* public void setLenient(boolean lenient)指定日期/时间解析是否不严格。进行不严格解析时,解析程序可以使用启发式的方法来解释与此对象的格式不精确匹配的输入。进行严格解析时,输入必须匹配此对象的格式。
* 参数:
* lenient - 为 true 时,解析过程是不严格的
* 不会自动将错误日期转换为正确的日期
* 例如:19450000,使用原DateUtil会转换为19441130
* @author liuzh
*/
public class DateUtils {
public static final String COMPACT_DATE_FORMAT = "yyyyMMdd";
public static final String YM = "yyyyMM";
public static final String NORMAL_DATE_FORMAT = "yyyy-MM-dd";
public static final String NORMAL_DATE_FORMAT_NEW = "yyyy-mm-dd hh24:mi:ss";
public static final String DATE_FORMAT = "yyyy-MM-dd";
public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_ALL = "yyyyMMddHHmmssS";
public static Long strDateToNum(String paramString) throws Exception {
if (paramString == null)
return null;
String[] arrayOfString = null;
String str = "";
if (paramString.indexOf("-") >= 0) {
arrayOfString = paramString.split("-");
for (int i = 0; i < arrayOfString.length; ++i)
str = str + arrayOfString[i];
return Long.valueOf(Long.parseLong(str));
}
return Long.valueOf(Long.parseLong(paramString));
}
public static Long strDateToNum1(String paramString) throws Exception {
if (paramString == null)
return null;
String[] arrayOfString = null;
String str = "";
if (paramString.indexOf("-") >= 0) {
arrayOfString = paramString.split("-");
for (int i = 0; i < arrayOfString.length; ++i)
if (arrayOfString[i].length() == 1)
str = str + "0" + arrayOfString[i];
else
str = str + arrayOfString[i];
return Long.valueOf(Long.parseLong(str));
}
return Long.valueOf(Long.parseLong(paramString));
}
public static String numDateToStr(Long paramLong) {
if (paramLong == null)
return null;
String str = null;
str = paramLong.toString().substring(0, 4) + "-"
+ paramLong.toString().substring(4, 6) + "-"
+ paramLong.toString().substring(6, 8);
return str;
}
public static Long sysDateToNum() throws Exception {
SimpleDateFormat localSimpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd");
localSimpleDateFormat.setLenient(false);
return strDateToNum(localSimpleDateFormat.format(HBUtil.getSysdate()));
}
public static java.util.Date stringToDate(String paramString1,
String paramString2) throws Exception {
SimpleDateFormat localSimpleDateFormat = new SimpleDateFormat(
paramString2);
localSimpleDateFormat.setLenient(false);
try {