业务需要把诸如 "20140806" 这样的字符串转换成具体的时间 即 long 来表示,但是 却得不到想要的 long。
直接上代码给大家看下:
下面这个方法将字符串转成时间得到 long 类型数据;
private final static String DAY_PATTERN = "YYYY-MM-dd";
private final static String SEC_PATTERN = "YYYY-MM-dd HH:mm:ss";
public static long textToDate( String str ){
if( null==str || "".equals( str.trim() ) ){
return -1;
}
SimpleDateFormat sdf = null;
int ps = str.length();
if( ps==DAY_PATTERN.length() ){
sdf = new SimpleDateFormat( DAY_PATTERN );
}else if( ps == SEC_PATTERN.length() ){
sdf = new SimpleDateFormat( SEC_PATTERN );
}else{
return -1;
}
try
{
return sdf.parse( str ).getTime();
}
catch (ParseException e)
{
e.printStackTrace();
}
return -1;
}
测试运行:
public static void main(String[] args) {
//
String time = "2013-04-22 18:43:22";
long hehe = DateUtil.textToDate( time );
System.out.println( hehe );
System.out.println( sec2time( hehe ) );
}
结果:
1356864202000
2013-12-30 18:43:22
把 time 变成 ”2013-08-22 18:43:22“ 输出结果仍旧是:
1356864202000
2013-12-30 18:43:22
结果显然与 输入时的日期有好大的差距,好伤心,不知道错在哪,请大神指点!!
这会跟系统有关吗?xp 系统 jdk_1.7...
------解决方案--------------------
我没有看你的代码,但是这样的代码是很简单的
String str = "20140806";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
long lon = sdf.parse(str).getTime();
System.out.println(lon);
Date d = new Date(1407254400000L);
System.out.println(d);

------解决方案--------------------
原因很简单,你前2行就错了
YYYY得改成yyyy
------解决方案--------------------
YYYY都是小写的