Я запрашиваю отчет у Amazon MWS, используя их SDK (https://developer.amazonservices.com/doc/bde/reports/v20090101/cSharp.html). Я звоню Запросить отчет (http://docs.developer.amazonservices.com/en_US/reports/Reports_RequestReport.html). Я должен указать дату начала и окончания. Проблема, с которой я сталкиваюсь:SDK не примет мой ввод DateTime, если инициализирован определенным образом, но выполняет другой путь, и я не могу понять, почему это так.
Вот мой код. Когда я инициализирую с использованием DateTime.Today.AddDays (-14) это НЕ работает. Когда я инициализирую, устанавливая конкретную дату, новый DateTime (2019, 1, 23) это работает. Когда я запускаю оба через LINQPad, структура выглядит одинаково для меня.
Закомментированный код не работает. Код сразу после делает.
MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();
config.ServiceURL = "https://mws.amazonservices.com";
MarketplaceWebServiceClient service =
new MarketplaceWebServiceClient(
ConfigurationManager.AppSettings["AWSAccessKey"],
ConfigurationManager.AppSettings["SecretKey"],
"Easy MWS Reports",
"1.0",
config);
RequestReportRequest request = new RequestReportRequest();
request.Merchant = ConfigurationManager.AppSettings["SellerId"];
request.MarketplaceIdList = new IdList();
request.MarketplaceIdList.Id = new List<string>( new string [] { ConfigurationManager.AppSettings["MarketplaceId"] } );
request.ReportType = "_GET_AMAZON_FULFILLED_SHIPMENTS_DATA_";
//request.StartDate = DateTime.Today.AddDays(-14);
//request.EndDate = DateTime.Today;
request.StartDate = new DateTime(2019, 1, 6);
request.EndDate = new DateTime(2019, 2, 5);
RequestReportResponse response = service.RequestReport(request);
Действительно странная вещь, когда я проверяю объект запроса перед вызовом API, мои даты начала и окончания корректны. Когда я получаю этот ответназад Amazon сообщает мне, что мои даты начала и окончания - оба. Теперь. Это заставляет меня полагать, что объекты DateTime сериализуются по-разному в зависимости от того, как я их инициализирую, и что я не понимаюи.
[ОБНОВЛЕНИЕ] Я верю, что Эитамал прав, но, похоже, нет способа сделать это проще, чем то, на чем я остановился, а именно:
var then = DateTime.Today.AddDays(-15);
var now = DateTime.Today;
request.StartDate = new DateTime(then.Year, then.Month, then.Day);
request.EndDate = new DateTime(now.Year, now.Month, now.Day);