当前位置: 代码迷 >> J2SE >> 将字符串转时间,所得时间不对解决思路
  详细解决方案

将字符串转时间,所得时间不对解决思路

热度:118   发布时间:2016-04-23 20:22:04.0
将字符串转时间,所得时间不对
业务需要把诸如 "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都是小写的
  相关解决方案