现在 我有个String str ="2006-11-22" 这个是 字符串   但是我想让他变成  Date d = "2006-11-22" 就是 变个类型  把 String  变成 Date   其他 都不要改  我 试了用  Date d = new Date(String) 但是 报错   我也用了  DateFormat format = new SimpleFormat("yyyy-MM-dd")    
format.fromat(Date)  这个返回 String  我不需要  因为我String str ="2006-11-22" 本来就是这个 
format.parse(String) 这个返回是 Date 但是 不是我要的  Date  这个打印出的是  Wed Dec 21 00:00:00 CST 1983 

解决方案 »

  1.   

    import org.apache.commons.lang.StringUtils;import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.*;/**
     * 日期Util类
     * 
     * @author calvin
     */
    public class DateUtil {
    private static String defaultDatePattern = "yyyy-MM-dd"; /**
     * 获得默认的 date pattern
     */
    public static String getDatePattern() {
    return defaultDatePattern;
    } /**
     * 返回预设Format的当前日期字符串
     */
    public static String getToday() {
    Date today = new Date();
    return format(today);
    } /**
     * 使用预设Format格式化Date成字符串
     */
    public static String format(Date date) {
    return date == null ? "" : format(date, getDatePattern());
    } /**
     * 使用参数Format格式化Date成字符串
     */
    public static String format(Date date, String pattern) {
    return date == null ? "" : new SimpleDateFormat(pattern).format(date);
    } /**
     * 使用预设格式将字符串转为Date
     */
    public static Date parse(String strDate) throws ParseException {
    return StringUtils.isBlank(strDate) ? null : parse(strDate,
    getDatePattern());
    } /**
     * 使用参数Format将字符串转为Date
     */
    public static Date parse(String strDate, String pattern)
    throws ParseException {
    return StringUtils.isBlank(strDate) ? null : new SimpleDateFormat(
    pattern).parse(strDate);
    } /**
     * 在日期上增加数个整月
     */
    public static Date addMonth(Date date, int n) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MONTH, n);
    return cal.getTime();
    } public static String getLastDayOfMonth(String year, String month) {
      Calendar cal = Calendar.getInstance();
      //年
      cal.set(Calendar.YEAR, Integer.parseInt(year));
      //月,因为Calendar里的月是从0开始,所以要-1
    //  cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);
      //日,设为一号
      cal.set(Calendar.DATE, 1);
      //月份加一,得到下个月的一号
      cal.add(Calendar.MONTH,1);
      //下一个月减一为本月最后一天
      cal.add(Calendar.DATE, -1);
      return String.valueOf(cal.get(Calendar.DAY_OF_MONTH));//获得月末是几号
     }
     public static Date getDate(String year,String month,String day)throws ParseException{
     String result=year+"-"+(month.length()==1?("0"+month):month)+"-"+(day.length()==1?("0"+day):day);
     return parse(result);
     }
      

  2.   

    String dateString ="2006-11-22";
     try {
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     Date date = sdf.parse(dateString);
     }catch (ParseException e){
     System.out.println(e.getMessage());
     }
      

  3.   

    有简单点 方法吗   难道 我 要为这个 转换 专门去 写个 JAVA文件吗 
      

  4.   

    Wed Nov 22 00:00:00 CST 2006
    我 不要这个结果啊  2楼   
      

  5.   

    我有个String str ="2006-11-22" 这个是 字符串   但是我想让他变成  Date d = "2006-11-22" 就是 变个类型  把 String  变成 Date   其他 都不要改
      

  6.   

    import java.util.Date;
    import java.text.*;class t2{
    public static void main(String args[]){
    String str ="2006-11-22";
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            try{
            Date date = format.parse(str);
            }catch(Exception ex){
           
            }       
    }
    }
      

  7.   

    SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();
    formatDate.parse(formatDate.format(date));
      

  8.   

    Date date = format.parse(str); 这个 返回的是 Wed Nov 22 00:00:00 CST 2006 这种格式 不行  String str ="2006-11-22" 这个是 字符串   但是我想让他变成  Date d = "2006-11-22" 就是 变个类型  把 String  变成 Date    其他 都不要改
      

  9.   

    xn2486994(JAVA-SunShine)  你的显示的值也是 下面的 Tue Oct 24 00:00:00 CST 2006
      

  10.   

    只要是Date型的,直接输出就会出这个吧!Tue Oct 24 00:00:00 CST 2006
    必须得用一步format(date, "yyyy-MM-dd");的。
            SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
            Date date = new Date();
            date = formatDate.parse(formatDate.format(date));
            System.out.println(date);  // 这里还是会输出Tue Oct 24 00:00:00 CST 2006
            System.out.println(formatDate.format(date)); // 这样才能输出2006-10-24
      

  11.   

    但是我数据库  是  datetime  啊  我怎么插数据呢 如果是 Tue Oct 24 00:00:00 CST 2006
    而且用的是 hibernate  插数据要 用 save(Object)  这个Object 里面的 映射 时间是  Date啊
      

  12.   

    System.out.println(date); 的格式你是无法改变的,但date的值已经是你要的了。你可直接把字符串save试试,有的数据库能实现自动转换格式的。要实在不行,你就应该去找hibernate的文档,看看应该是个什么类型的数据save进去。
      

  13.   

    LZ在理解上有问题,JAVA的时间输出就是那样的,你也可以本地化。
    hibernate你可以用参数压入,这个参数可以是时间类型的对象