Fitbit以英里而非公里为单位获取距离数据



我有一个从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;
    }
}

EDIT我希望通过在标题中添加"Accept Language"之类的内容来获得已经转换的数据,但我不知道如何利用这个概念。我突然想到了使用转换,但此时我想看看是否有一种更简单的方法,即添加一个简单的头,而不是为每个场景、保存数据的类、每个不同的区域等创建一个转换类。

我做了一个快速搜索,假设RestRequest是RestSharp库中的类。如果是,根据他们的网站(http://restsharp.org)你会做一些类似的事情:

request.AddHeader("Accept-Language", "...");

不确定正确的值应该是多少,您需要从FitBit的API文档中了解这一点。

无论此代码提供什么值,您都可以简单地将其除以1.60934,得到相同的距离(以英里为单位)。希望这能帮助你解决问题。

double kilometers2 = 321.9;
double miles2 = ConvertDistance.ConvertKilometersToMiles

最新更新