我已成功检索某个点的所有数据,但我当前正在尝试检索某个日期范围内的数据。我在指定范围时遇到问题。请参阅下面的代码。我认为一切都很好,直到“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/