2015-05-25 47 views
0

我在一个文本文件以下数据后来我将当在扫描仪GregorianCalendar的输出:日期是java.util.GregorianCalendar中[时间= 1141556400000,areFieldsSet =真,areAllFieldsSet =真

17-Mar-2006 1100 1280 
16-Jan-2002 1120 1230 
15-Jun-2003 1140 1900 

我将这些数据构建为“股票市场”对象。 实例变量“date”被声明为GregorianCalendar。 构造函数String dt应该在String中使用“dd-MMM-yyyy”形式。 与public String date()相同,它应该返回一个形式为“dd-MMM-yyyy”的字符串。 我以如下方式完成它,但输出: 日期是java.util.GregorianCalendar [time = 1141556400000,areFieldsSet = true,areAllFieldsSet = true,lenient = true,zone = sun.util.calendar.ZoneInfo [id = ” .....

上修复任何想法

public class Stockmarket{ 
    // instance variables 
    private GregorianCalendar date; 
    private double opening; 
    private double closing; 

    public Stockmarket(String dt, double opening, double closing) 

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 
    Date d = sdf.parse(dt); 
    GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance(); 
    cal.setTime(d); 
    this.date=cal; 
    this.opening=opening; 
    this.closing=closing; 
    } 

    public String date(){ 

    SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy, Locale.US"); 
    df.setCalendar(this.date); 
    String date = df.format(this.date.getTime()); 
    return date; 
    } 
+1

您确定要使用GregorianCalendar进行日期存储吗? –

+1

谷歌第一个结果“字符串到GregorianCalendar” - > http://stackoverflow.com/questions/240510/convert-a-string-to-gregoriancalendar –

+0

@LaurentiuL。教授设定它,我别无选择:) – Katherine

回答

1

你可以达到你想要什么用的SimpleDateFormat,如果格式是已知的和穿制服

public class TestParse { 
    public static void main(String[] args) { 
     String myDate = "17-Mar-2006"; 

     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy"); 
     Date date = null; 
     try { 
      date = simpleDateFormat.parse(myDate); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     GregorianCalendar calendar = new GregorianCalendar(); 
     calendar.setTime(date); 
     System.out.println(calendar.getTime()); 
    } 
} 

编辑?: 增加了基于问题的变化更多信息

方法getStringFromDate产生17月 - 2006年的格式化的日期

public class TestParse { 
    public static void main(String[] args) { 
     String myDate = "17-Mar-2006"; 
     Date date = getDateFromString(myDate); 
     // Set the Calendar 
     GregorianCalendar calendar = new GregorianCalendar(); 
     calendar.setTime(date); 
     // format date 
     String formattedDate = getStringFromDate(calendar); 
     System.out.printf("The formatted date is : %s & the dates are equal %s%n", formattedDate, formattedDate.equals(myDate)); 
    } 

    public static String getStringFromDate(GregorianCalendar calendar) { 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 
     simpleDateFormat.setCalendar(calendar); 
     return simpleDateFormat.format(calendar.getTime()); 
    } 

    public static Date getDateFromString(String input) { 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 
     Date date = null; 
     try { 
      date = simpleDateFormat.parse(input); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return date; 
    } 
} 

你的股市类的格式

public class Stockmarket { 
     // instance variables 
     private GregorianCalendar date; 
     private double opening; 
     private double closing; 

     public Stockmarket(String dt, double opening, double closing) { 
      SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 
      Date d = null; 
      try { 
       d = sdf.parse(dt); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 
      GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance(); 
      cal.setTime(d); 
      this.date = cal; 
      this.opening = opening; 
      this.closing = closing; 
     } 

     public String date() { 
      SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 
      df.setCalendar(this.date); 
      String date = df.format(this.date.getTime()); 
      return date; 
     } 
    } 

固定式测试类

public class TestParse { 

    public void doTest() 
    { 
     Stockmarket stockmarket1 = new Stockmarket("17-Mar-2006",500,600); 
     stockmarket1.date(); 
     System.out.println(stockmarket1.date()); 

     Stockmarket stockmarket2 = new Stockmarket("16-Jan-2002",500,600); 
     stockmarket2.date(); 
     System.out.println(stockmarket2.date()); 

     Stockmarket stockmarket3 = new Stockmarket("15-Jun-2003",500,600); 
     stockmarket3.date(); 
     System.out.println(stockmarket3.date()); 

    } 
    public static void main(String[] args) { 

     TestParse testParse = new TestParse(); 
     testParse.doTest(); 
    } 
} 
相关问题