转换具有时间值的字符串" 0:00"成十进制/双值?

时间:2017-04-29 06:34:52

标签: java string time double jfreechart

我正在尝试从表中检索数据并将它们转换为double值以便对它们进行图形化。第0列填充时间值,格式为" 00:00"第1列用十进制值填充。

使用此代码,我似乎已正确检索数据并将第1列上的内容转换为double值,但不知道如何将带有时间值的String转换为double值以表示小时数:

int row = tableRadio.getRowCount();
    for (int r = 0; r  < row; r++) {
        double r2 = Double.parseDouble( tableModel.getValueAt(r, 0).toString() );
        double r3 = Double.parseDouble( tableModel.getValueAt(r, 1).toString() );
        series.add(r2, r3);
    }

我一直得到java.lang.NumberFormatException:对于输入字符串:&#34; 0:00&#34;当试图绘制这些数据时,根据我的理解,因为冒号不能等同于数值。但我怎么能说出来,&#34; 00:21&#34;而是显示为&#34; 0.21&#34;或者我可以用来绘制数据的东西?欢迎任何建议和例子。

2 个答案:

答案 0 :(得分:2)

使用SimpleDateFormat users = driver.find_elements_by_xpath("//a[@class='username' and not(strike)]") 时间列并创建时间序列图表,如图here所示。在结果parse()上使用setDateFormatOverride()格式化时间,如here所示。如有必要,您可以更改DateAxis,如图所示here

答案 1 :(得分:1)

所以我使用@Dawood ibn Kareem的方法开始工作。这是对我有用的最终代码:

    //get number of rows
    int row = tableRadio.getRowCount();
    for (int r = 0; r  < row; r++) {

        //get column0's values and convert to String
        String time = ( tableModel.getValueAt(r, 0).toString() );

        //split time into two arrays
        String[] timeSplit = time.split(":");

        //convert arrays to doubles 
        double hours = Double.parseDouble(timeSplit[0]);
        double min = Double.parseDouble(timeSplit[1]);

        //represent column0 values by number of hours
        double col0 = (min / 60) + hours;

        //get column1's values and convert to double
        double col1 = Double.parseDouble( tableModel.getValueAt(r, 1).toString() );

        //add values to series
        series.add(col0, col1);
    }//end of for loop`

现在所有的表值都转换为双精度值,我已经让它们成功绘制图形。