日期:2014-05-20  浏览次数:20854 次

字符串转日期,输入是2012,输出的结果是2011,这方法看不懂了~
Java code
import java.sql.Timestamp;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test {
     public static void main(String[] args) {
        
         System.out.println(fmtStr2Date("2012-06-21 10:00:0000","yyyyMMddHHmmss").toString());
        
     }
     public static Date fmtStr2Date(String strDate, String fmt){
            Timestamp dt = null;
            if (strDate != null && strDate.equals("") == false) {
                try {
                    SimpleDateFormat formatter = new SimpleDateFormat(fmt);
                    ParsePosition pos = new ParsePosition(0);
                    java.util.Date cDate = formatter.parse(strDate, pos);
                    dt = new Timestamp(cDate.getTime());
                } catch (Exception e) {                
                    //logger.error("\nstrDate="+strDate + " fmt="+fmt,e);
                }
            }
            return dt;
        }
}






输出结果:
2011-12-05 22:01:10.0

我已经湿了,跪求解答。。。。


------解决方案--------------------
给分给分
------解决方案--------------------
后面没有- 前面写- 位数都不对,当然是错的。
------解决方案--------------------
探讨
后面没有- 前面写- 位数都不对,当然是错的。

------解决方案--------------------
是的,格式不对。
------解决方案--------------------
探讨

给分给分

------解决方案--------------------
探讨

擦~~瞬间懂了

------解决方案--------------------
yyyyMMddHHmmss 要改成 yyyy-MM-dd HH:mm:ss
------解决方案--------------------
看下api 字符串格式应该要与格式化一致
------解决方案--------------------
探讨

引用:
后面没有- 前面写- 位数都不对,当然是错的。

+1

------解决方案--------------------
Java code
import java.sql.Timestamp;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test11 {
     public static void main(String[] args) {
        
         System.out.println(fmtStr2Date("2012-06-21 10:00:0000","yyyy-MM-dd HH:mm:ss").toString());
        
     }
     public static Date fmtStr2Date(String strDate, String fmt){
            Timestamp dt = null;
            if (strDate != null && strDate.equals("") == false) {
                try {
                    SimpleDateFormat formatter = new SimpleDateFormat(fmt);
                    ParsePosition pos = new ParsePosition(0);
                    java.util.Date cDate = formatter.parse(strDate, pos);
                    dt = new Timestamp(cDate.getTime());
                } catch (Exception e) {                
                    //logger.error("\nstrDate="+strDate + " fmt="+fmt,e);
                }
            }
            return dt;
        }
}

------解决方案--------------------
懂了就好,那种满足感,大家都明白。
------解决方案--------------------
接分 既然楼主懂了 那就均分吧 哈哈~~
------解决方案--------------------