java - 范围<日期>问题

标签 java android guava

我已成功检索某个点的所有数据,但我当前正在尝试检索某个日期范围内的数据。我在指定范围时遇到问题。请参阅下面的代码。我认为一切都很好,直到“dateRange.lowerEndpoint() = lowerDate;这是我不确定的地方。我将不胜感激任何帮助解决这个问题的帮助。

    public class GetDataAsync extends AsyncTask<String, Void, List> {
List<Value> dataValues = null;

@Override
protected List doInBackground(String... point) {

   // Adjust these variables accordingly
   final EmailAddress EMAIL_ADDRESS = CommonFactory.createEmailAddress("XXXX@gmail.com");
   final String ACCESS_KEY = "XXXX";
   final UrlContainer INSTANCE_URL = UrlContainer.getInstance("XXXX.appspot.com");

   Range<Date> dateRange = null;
   Date lowerDate = new Date(1398297720);
   Date upperDate = new Date(1395273970);

   dateRange.lowerEndpoint() = lowerDate; // <---- I know this is wrong.  Not sure of correct code.
   dateRange.upperEndpoint() = upperDate; // <---- I know this is wrong.  Not sure of correct code.


   final Server SERVER = ServerFactory.getInstance(INSTANCE_URL);
   String pointName[] = point;

   PointHelper pointHelper = HelperFactory.getPointHelper(SERVER, EMAIL_ADDRESS, ACCESS_KEY);
   boolean pointExists = pointHelper.pointExists(pointName[0]);
   List<Value> recordedValues = null;
   if (pointExists) {
       ValueHelper valueHelper = HelperFactory.getValueHelper(SERVER, EMAIL_ADDRESS, ACCESS_KEY);
       recordedValues = valueHelper.getSeries(pointName[0], dateRange);
   }
   return recordedValues;   }

@Override
protected void onPostExecute(List result) {
    dataValues = result;
    Value currentValue;
    Double currentDouble;
    for (int i = 0; i < dataValues.size(); i++) {
        Log.e("Log", String.valueOf(dataValues.get(i)));
        Value mValue = dataValues.get(i);
        Double mDouble = mValue.getDoubleValue();
        Date mDate = mValue.getTimestamp();
        Log.e("Double Value", String.valueOf(mDouble));
        Log.e("Timestamp", String.valueOf(mDate));
        currentValue = dataValues.get(0);
        currentDouble = currentValue.getDoubleValue();
    }
} }

最佳答案

在我看来就像你想要的:

Range<Date> dateRange = Range.closed(lowerDate, upperDate);

(假设您确实希望范围内包含较低日期和较高日期。)

另外,你说你知道 dateRange.lowerEndpoint() = lowerDate; 是错误的,但如果它有帮助,我会解释它有什么问题:

  • 首先,将 dateRange 初始化为 null。您必须先实际创建一个对象,然后才能对其执行任何操作,因此即使可以调用方法来设置范围的下端点和上端点(或分配字段),如果您不这样做,您也无法做到这一点首先创建对象。您将得到 NullPointerException
  • 其次,lowerEndpoint()upperEndpoint() 是方法。它们不是字段,您无法分配给它们。
  • 最后,Range 是一个不可变类型。 Range 一旦创建,就无法更改。您似乎尝试将它用作可变类型,首先创建一个空范围,然后更改它以具有您想要的属性。 范围要求在创建它时预先指定所有内容。

关于java - 范围<日期>问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814769/

相关文章:

java - 如何编写不等于某物的匹配器

java - 使用 Java Sound API 播放 MP3

java - 如何调用Java类的main函数?

android - 在ListView中添加图像

java - 将 Spring Transactional 与 guava eventBus 订阅者一起使用

java - 在未知值之前对具有已知值的列表进行排序

java - 使用float和double进行计算,给出不同的结果

java - 为什么findFragmentById总是返回null

每次应用程序启动时,Android 启动画面都会显示不同的图像

java - Guava 中的 ListenableFuture 将在哪个线程中调用 FutureCallback?