我有一个从Fitbit获取数据的示例项目,但信息来自公制系统而非英制系统。下面是使用TimeSeriesDataList类提取日期和字符串对列表的代码,但是以千米而不是英里为单位。如何修改此代码以获取数英里而不是公里的数据?非常感谢任何帮助。
public class TimeSeriesDataList
{
public List<Data> DataList { get; set; }
public class Data
{
public DateTime DateTime { get; set; }
public string Value { get; set; }
}
}
public class FitbitClient : IFitbitClient
{
/// <summary>
/// Get TimeSeries data for another user accessible with this user's credentials
/// </summary>
/// <param name="timeSeriesResourceType"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="userId"></param>
/// <returns></returns>
private TimeSeriesDataList GetTimeSeries(TimeSeriesResourceType timeSeriesResourceType, DateTime baseDate, string endDateOrPeriod, string userId)
{
string userSignifier = "-"; //used for current user
if (!string.IsNullOrWhiteSpace(userId))
userSignifier = userId;
// Here is where I believe I need to make a change, somehow, so that
// data that comes in when this is string is requested, comes in metric units
string requestUrl = string.Format("/1/user/{0}{1}/date/{2}/{3}.xml", userSignifier, StringEnum.GetStringValue(timeSeriesResourceType), baseDate.ToString("yyyy-MM-dd"), endDateOrPeriod);
RestRequest request = new RestRequest(requestUrl);
request.OnBeforeDeserialization = resp => {
XDocument doc = XDocument.Parse(resp.Content);
//IEnumerable<XElement> links = doc.Descendants("result");
var rootElement = doc.Descendants("result").FirstOrDefault().Descendants().FirstOrDefault();
if (rootElement != null && !string.IsNullOrWhiteSpace(rootElement.Name.LocalName))
request.RootElement = rootElement.Name.LocalName;
};
var response = restClient.Execute<TimeSeriesDataList>(request);
HandleResponse(response);
return response.Data;
}
}
编辑我希望通过在标题中添加“Accept-Language”的内容来获取已经转换的数据,但我不知道如何利用这个概念。使用转换是我的想法,但此时我想看看是否有一种更简单的方法是添加一个简单的标题而不是为每个场景创建一个转换类,为每个不同的区域创建数据的类等。
答案 0 :(得分:2)
我做了一个快速搜索,并假设RestRequest
是RestSharp库中的类。如果是这样,根据他们的网站(http://restsharp.org),您可以执行以下操作:
request.AddHeader("Accept-Language", "...");
不确定正确的值应该是什么,你需要从FitBit's API documentation找出来。
答案 1 :(得分:1)
无论此代码提供什么值,您只需将其除以1.60934即可获得相同的英里距离。希望能帮助您解决问题。
答案 2 :(得分:0)
double kilometers2 = 321.9;
double miles2 = ConvertDistance.ConvertKilometersToMiles