Java 尝试使用日期方法时出现日期异常

Java 尝试使用日期方法时出现日期异常,java,date,Java,Date,我定义了一个对象模型,其中一个数组元素是字符串 public static String[] columnNames6 = {"Total Shares", "Total Calls", "Call Strike", "Call Premium", "Call Expiry" }; public static Object[][] data6 =

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

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"},
       };
然后我使用下面的代码来获取日期,这样我就可以使用data方法,但是 没有乐趣-有人能告诉我为什么在我这样做之后它会抛出异常吗

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新手,请原谅我在教程中缺乏知识 似乎无法前进

谢谢


Simon

ExpiryDate是一个字符串,请尝试将其更改为一个日期,该日期已弃用

日期(字符串s)
不赞成。从JDK 1.1版开始,由DateFormat.parse(字符串s)取代。

下面是一个例子:

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

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

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

正如JonH所说,您应该使用
DateFormat.parse
而不是
newdate(String)
。此外,您对日期差异的计算可能也不太好:

//Calculate Days Option Expiry
long DaysDifference    = EndOptionDate.getTime() - TodaysDate.getTime();
将以毫秒为单位显示两个日期之间的差异,而不是以天为单位。您可以这样使用以获得日差:

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

代码中的字符串值实际上是一个日期模式,而不是像“07/01/2011”这样的完整日期字符串。所以这个问题就更没有意义了。@BalusC-刚刚注意到,它似乎没有意义@Simon Andi请澄清要求。嗨,伙计们,我有一个抽象的表格模型,我用pop日历读取日期。然后,我需要获取未来日期,并计算从今天到当前日期的天数。未来日期作为字符串存储在GV.data6[0][4]中。很抱歉,我不太确定您要问什么。功能要求不清楚。请澄清。您想对“dd/mm/yyyyy”做什么?惯例是类名以大写字母开头,而变量名不以大写字母开头。仅仅因为某些内容编译正确而让您知道,并不意味着它将正确运行。例如,我编写了一个程序,读取数组或数据读取器的内容。代码编译得很好,但当我运行它时会引发异常。正如您所知道的,编译后的代码并不总是好代码。。。你有一个字符串想要变成一个日期,这不是问题。问题是数组中的字符串是“dd/mm/yyyy”。该字符串不包含任何日期信息,只包含格式信息。您需要一个类似“07/01/2011”的字符串来创建日期。正如Jon提到的,可以使用“dd/mm/yyyy”字符串来解释数组中的日期字符串。简短说明:您的数组字符串需要类似于以下内容:“07/01/2011”。我希望这有助于澄清您的困惑。谢谢gabuzo try,我将尝试使用Todays()不是静态方法。您需要一个枚举实例:TimeUnit.millizes.toDays(…)很抱歉,没有任何结果-我需要知道的是如何将字符串ExpiryDate转换为具有dd/MM/yyyy格式的日期please@Simon将我的字符串ExpiryDate转换为dd/MM/yyyy格式的日期是什么意思?转换仍然是错误的,它必须是时间单位。毫秒。今天(…)。如果您调用TimeUnit.DAYS.toDays(…),它将依次调用TimeUnit.DAYS.convert(dt,TimeUnit.DAYS),它将持续时间从天转换为持续时间:),但是我喜欢这个实用程序类,非常值得一提。