java.util.Date data= new java.util.Date();有个字符窜
String strDate="20070115,184021399,"//YYYYMMDD、hhmmss000
请问
1.如何转化为一个日期相关的类型(如Data,Calendar)?
2.如何判断前一天的日期?

解决方案 »

  1.   

    DateFormat df = new SimpleDateFormat("yyyyMMdd,HHmmssSSS");
    String dateStr = "20070115,184021399";//YYYYMMDD、hhmmss000
    Calendar c = Calendar.getInstance();
    c.setTime(df.parse(dateStr));
    c.add(Calendar.DAY_OF_MONTH, -1);
    System.out.println(df.format(c.getTime()));
      

  2.   

    给楼主一个例子吧:
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class DateChange {
        
    private final static String DATE_FORMAT = "yyyy-MM-dd";

    /**
     * @param args
     */
    public static void main(String[] args) {

    Date day1=DateChange.getFormatDate("20070115,184021399","yyyymmdd,hhmmssSSS");
            System.out.println(day1);
            
            Calendar c = Calendar.getInstance();
    c.setTime(day1);

    c.add(Calendar.DATE,-1);
     System.out.println(c.getTime());
    }
        

    /**
     * 根据格式得到格式化后的日期
     * @param currDate 要格式化的日期
     * @param format 日期格式,如yyyy-MM-dd
     * @see java.text.SimpleDateFormat#parse(java.lang.String)
     * @return Date 返回格式化后的日期,格式由参数<code>format</code>定义,如yyyy-MM-dd,如2006-02-15
     */
    public static Date getFormatDate(String currDate, String format) {
    SimpleDateFormat dtFormatdB = null;
    try {
    dtFormatdB = new SimpleDateFormat(format);
    return dtFormatdB.parse(currDate);
    } catch (Exception e) {
    dtFormatdB = new SimpleDateFormat(DATE_FORMAT);
    try {
    return dtFormatdB.parse(currDate);
    } catch (Exception ex){}
    }
    return null;
    }
    }
      

  3.   

    DateFormat df = new SimpleDateFormat("yyyyMMdd,HHmmssSSS");
    String dateStr = "20070115,184021399";//YYYYMMDD、hhmmss000
    Calendar c = Calendar.getInstance();
    c.setTime(df.parse(dateStr));
    c.add(Calendar.DAY_OF_MONTH, -1);
    System.out.println(df.format(c.getTime()));
      

  4.   

    DateFormat df = new SimpleDateFormat("yyyyMMdd,HHmmssSSS");
    String dateStr = "20070115,184021399";//YYYYMMDD、hhmmss000
    Calendar c = Calendar.getInstance();
    c.setTime(df.parse(dateStr));
    c.add(Calendar.DAY_OF_MONTH, -1);
      

  5.   

    DateFormat df = new SimpleDateFormat("yyyyMMdd,HHmmssSSS");
    String dateStr = "20070115,184021399";//YYYYMMDD、hhmmss000
    Calendar c = Calendar.getInstance();
    c.setTime(df.parse(dateStr));
    c.add(Calendar.DAY_OF_MONTH, -1);
    System.out.println(df.format(c.getTime()));
      

  6.   

    public class ManageWeek {
     //判断两个日期是否在同一周
     boolean isSameWeekDates(Date date1, Date date2) {
      Calendar cal1 = Calendar.getInstance();
      Calendar cal2 = Calendar.getInstance();
      cal1.setTime(date1);
      cal2.setTime(date2);
      int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
      if (0 == subYear) {
        if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
       return true;
      }
      else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
        // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
        if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
       return true;
      }
      else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
        if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
       return true;
      }
      return false;
     }
     
     
     //产生周序列
     public static String  getSeqWeek(){
      Calendar c = Calendar.getInstance(Locale.CHINA);
      String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
      if(week.length()==1)week = "0" + week;
      String year = Integer.toString(c.get(Calendar.YEAR));  
      return year+week;
      
     }
     
      //获得周一的日期
      public static String getMonday(Date date){
       Calendar c = Calendar.getInstance();
       c.setTime(date);
       c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
       return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
      }
      
      
      //获得周五的日期
      public static String getFriday(Date date){
       Calendar c = Calendar.getInstance();
       c.setTime(date);
       c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);   
       return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());  
      }//当前日期前几天或者后几天的日期 public static String afterNDay(int n){
            Calendar c=Calendar.getInstance();
            DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
            c.setTime(new Date());
            c.add(Calendar.DATE,n);
            Date d2=c.getTime();
            String s=df.format(d2);
            return s;
        }
      
      public static void main(String[] args){  }}经常碰到把一个字符串转成一个Date的问题,其实就3句话:String myString = "2005/12/20";SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.CHINA);
    Date d = sdf.parse(myString);下面是个例子,存档package formatdatetime;import java.text.*;
    import java.util.*;/**
     * @author Administrator
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class StringToDateTimeTest { public static void main(String[] args) {  String myString = "Tue Oct 18 04:11:56 CST 2005";
      //String myString = "2005/12/20";
      try {
       SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
       //SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd", Locale.CHINA);
       Date d = sdf.parse(myString);
       Calendar c = Calendar.getInstance();
       c.setTime(d);
       String s = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
       System.out.println(s);
       
      } catch (Exception e) {
       e.printStackTrace();
      }
     }
    }
      

  7.   

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Date;
    import java.util.Calendar;
    import java.text.SimpleDateFormat;
    import java.text.DateFormat;下面这句语法错误 请帮忙
    c.setTime(df.parse(dateStr));环境eclipse JDK5.0
      

  8.   

    Unhandled exception type ParseException
      

  9.   

    请问换一种格式咋不行了呢? 
    我想以新的格式2007/01/01 10:10:10 `获得当前的时间请高人帮我看看。谢谢。DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
    String strTime = new String("2007/01/01 10:10:10");
    try{
    Calendar c = Calendar.getInstance();
    c.setTime(df2.parse(strTime));

    Date date = new Date();  
    c.setTime(date);
    System.out.println(df.format(c.getTime()));
    strTime = "" + df.format(c.getTime());
    }catch(Exception e){
    e.printStackTrace();
    }
      

  10.   

    你还可以这样  谁你用什么格式!!只要你喜欢但是前提是一要二者要一致!
    DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日 hh小时mm分钟ss");
    String strTime = new String("2007年01月01日 10小时10分钟10");
      

  11.   

    试试下面的代码DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    String strTime = new String("2007/01/01 10:10:10");
    try {
    Calendar c = Calendar.getInstance();
    c.setTime(df.parse(strTime));
    System.out.println(df.format(c.getTime())); Date date = new Date();
    c.setTime(date);
    System.out.println(df.format(c.getTime()));
    strTime = "" + df.format(c.getTime());
    } catch (Exception e) {
    e.printStackTrace();
    }