【问题标题】:MPAndroid Date Formatting and Parsing Loses PrecisionMPAndroid 日期格式和解析丢失精度
【发布时间】:2019-02-13 08:19:40
【问题描述】:

我将 MPAndroid 库用于我的 android 应用程序的图表。我在条目中输入了一个长值。我的问题是,当我格式化 x 轴的值时,它使用浮点值而不是 long,因此会失去精度。

这是我进入图表的代码:

String dateString = "02/13/2019(11:23:45)";
long readingDate = 0;
try {
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy(kk:mm:ss)", Locale.US);
    Date date = sdf.parse(dateString);
    readingDate = date.getTime();
    } catch (ParseException e) {
         e.printStackTrace();
    }
SensorData.add(new Entry(readingDate, 1.5);

这是我格式化 x 轴的代码:

private class XAxisValueFormatter implements IAxisValueFormatter {

    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        String dateString = new SimpleDateFormat("MM/dd/yyyy(kk:mm:ss)", Locale.US).format(value);
        return dateString;
    }
}

我该如何解决这个问题?

【问题讨论】:

  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。

标签: java android mpandroidchart


【解决方案1】:

一种可能的解决方案是让您的第一个点保持 0 值。

基本上,您需要从Entry 的每个新 x 值中减去 start_timestamp,因此图表将从 0 值开始,而不是从时间戳开始。

例如

假设start_timestamp 变量保存了您的第一个数据点时间戳。

要添加新条目,请使用:

SensorData.add(new Entry(readingDate - start_timestamp, 1.5);

要格式化 x 值,您只需将 start_timestamp 添加到提供的 x 值。

【讨论】:

    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2021-11-10
    • 2011-05-09
    • 2018-08-06
    • 1970-01-01
    相关资源
    最近更新 更多