尝试使用日期方法时的日期异常

时间:2011-01-07 15:40:08

标签: java date

我已经定义了一个对象模型,其中一个数组元素是一个字符串

public static String[] columnNames6
          = {"Total Shares",
             "Total Calls",
             "Call Strike",
             "Call Premium",
             "Call Expiry"
            };

public static Object[][] data6
= {
         { new Double(0), new Double(0), new Double(0), new Double(0),"dd/mm/yyyy"},
       };

然后我使用以下代码来获取日期,以便我可以使用数据方法但是 没有快乐 - 有人可以告诉我为什么在我这样做之后会抛出异常

String ExpiryDate = (String)GV.data6[0][4];
System.out.println("DATE STRING IS:   " + ExpiryDate);

Date EndOptionDate = new Date(ExpiryDate); // SOMETHING WRONG HERE even though it compiles okay

//Get Todays's Date
  Date TodaysDate = new Date();

  //Calculate Days Option Expiry
 long DaysDifference = EndOptionDate.getTime() - TodaysDate.getTime();

非常感谢一些帮助,因为真的不知道我应该如何编码 粗体行 - 对java来说是新手,所以请原谅我缺乏知识的教程 似乎无法前进。

由于

西蒙

2 个答案:

答案 0 :(得分:2)

ExpiryDate是一个字符串尝试将其更改为日期,不推荐使用

Date(String s) Deprecated. As of JDK version 1.1, replaced by DateFormat.parse(String s).

以下是一个例子:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

Date today = df.parse("25/12/2010");            

System.out.println("Today = " + df.format(today));

答案 1 :(得分:0)

正如JonH所说,你应该使用DateFormat.parse代替new Date(String)。此外,您对日期差异的计算可能也不好:

//Calculate Days Option Expiry
long DaysDifference    = EndOptionDate.getTime() - TodaysDate.getTime();

将给出两个日期之间的毫秒差异,而不是几天。您可以像这样使用TimeUnit来获取日差:

long dayDiff = TimeUnit.MILLISECONDS.toDays(EndOptionDate.getTime() - TodaysDate.getTime());