2

我有字符串遵循格式:

2012.11.15 22:00:00 1.2971 1.2974 1.2959 1.296

我使用以下代码:

DateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
                String inputLine;
                in.readLine();
                while ((inputLine = in.readLine()) != null) {
                    StringTokenizer st = new StringTokenizer(inputLine);
                    Date date       = df.parse( st.nextToken() );
                    double open     = Double.parseDouble( st.nextToken() );
                    double high     = Double.parseDouble( st.nextToken() );
                    double low      = Double.parseDouble( st.nextToken() );
                    double close    = Double.parseDouble( st.nextToken() );
              ...

但是方法 SimpleDateFormate 仅获取用作分隔符的日期/时间之间的日期和空间。
如何让日期与时间在一起?

4

3 回答 3

3

更好地使用 中的split()方法String,出于所有实际目的,它已StringTokenizer弃用,它仍然存在只是为了向后兼容。

尝试这样的事情:

String[] data = inputLine.split("\\s+");

现在,结果数组中的每个位置都将保存一段数据,您可以继续将其转换为适当的数据类型。特别是,对于日期(由实际日期和时间组成),请执行以下操作:

Date date = df.parse(data[0] + " " + data[1]);

上面的优点是您可以忘记在标记器中获取下一个标记,并且从一开始您就会知道读取了多少元素(数组的长度)。

于 2012-11-15T15:32:43.717 回答
2

采用:

Date date       = df.parse( st.nextToken() + " " + st.nextToken() );

将两个“单词”传递给 SimpleDateFormat 对象。

于 2012-11-15T15:32:59.643 回答
1

您创建一个StringTokenizer带有一个参数的构造函数(要标记的字符串)。此构造函数假定任何空格都是不同标记之间的分隔符。您的日期表示在中间有空格。因此StringTokenizer砍掉一半的日期,留下另一个作为第二个标记。

当您稍后使用空格来分隔其他字段时,直接的解决方案就是读取两个标记并重建组合字段:

 Date date = df.parse( st.nextToken()+" "+ st.nextToken());
于 2012-11-15T15:37:38.603 回答