Java,将纪元转换为毫秒

时间:2013-10-31 15:51:08

标签: java javascript time epoch integer-overflow

我的flot图表没有显示任何行,问题是使用Java中的Integer将纪元乘以1000? 这是我的原始数据,存储在.txt文件

epoch,value
1383229104,55559
1383229121,55559
1383229787,55565

由Servlet解析并存储在其中:

Vector<Integer> points = new Vector<Integer>();

e.g

points.add(Integer.parseInt(strLine.split(",")[0]) * 1000);
points.add(Integer.parseInt(strLine.split(",")[1]));

有多个文件,每个文件都包含一个单独的系列(线),可以在图表上绘制 对于每个Vector<Integer> points对象,它们都会添加到..

Vector<Dataset> datasets = new Vector<Dataset>();

数据集具有以下定义:

public class Dataset {

    private String name;
    private Vector<Vector<Integer>> points;

解析完所有文件并将其添加到Vector<Dataset> datasets后,将使用response.getWriter().write(new Gson().toJson(datasets));向客户端发送此对象。 并使用

'绘制'
var datasets = JSON.parse(xmlhttp.responseText);

    var plotarea = $("#placeholder");
    $.plot(plotarea, [datasets[0].points, datasets[1].points, datasets[2].points, datasets[3].points, datasets[4].points], {
        xaxis: {
            mode: "time",
            min: (new Date(2012, 0, 1)).getTime(),
            max: (new Date(2015, 0, 1)).getTime()
        }
    });

更新: -------------------------------------- ------------------------------------
在javascript中调试输出。
有{5}个文件被加载到Vector<Dataset> datasets = new Vector<Dataset>();

alert(datasets) .. [object Object],[object Object],[object Object],[object Object],[object Object]
console.log(datasets) .. [object Array]

我可以使用以下方式访问值:

alert(datasets[0].points[0][0]);
alert(datasets[0].points[0][1]);

输出将是两个警告对话框,一个包含249634688,另一个包含55559 注意: 1383229104 * 1000不应为249634688

2 个答案:

答案 0 :(得分:2)

你应该使用Long,而不是Integer。显然这是一个溢出问题。

答案 1 :(得分:0)

private Vector<Vector<Integer>> points;更改为private Vector<Vector<Long>> points;
造成预期结果,即1383229104000