2012-08-15 133 views
0

我有一个GetOrders类,需要我提供开始和结束日期作为DateTime值。然而,当我公司供应的日期,我收到此错误信息:Sorry, the end date was missing, invalid, or before the start date. <EndDate> must be in YYYY-MM-DD or YYYY-MM-DD HH:MI:SS format, and after the start date.格式日期时间没有将其转换为字符串

这是我的代码:

ff.GetOrders(DateTime.UtcNow, DateTime.UtcNow.AddMonths(-1), TradingRoleCodeType.Buyer, OrderStatusCodeType.Completed);

当我尝试使用格式化字符串,它工作:

 String dt1 = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"); 
     String dt2 = DateTime.UtcNow.AddMonths(-1).ToString("yyyy-MM-ddTHH:mm:ssZ"); 
+1

尝试不将它转换为UTC,发送默认的'DateTime.Now' – 2012-08-15 22:49:29

+6

看起来您将结束日期设置为比开始日期早1个月* *! – Jon 2012-08-15 22:49:36

回答

1

假设GetOrders有开始日期,结束日期(我不能说,因为你没有给的函数原型GetOrders),那么你的日期是在错误的顺序或者你应该AddMonths(1)而不是-1。

(如果不是这种情况,请包括GetOrders函数原型,我会修改或删除我的答案)

1

如前所述,你的数学是一点点... ...的时候,我认为:

ff.GetOrders(DateTime.UtcNow    , 
       DateTime.UtcNow.AddMonths(-1) , 
       TradingRoleCodeType.Buyer  , 
       OrderStatusCodeType.Completed 
      ) ; 

尝试像

DateTime dtStart = DateTime.utcNow  ; 
DateTime dtEnd = dtStart.AddMonths(1) ; 

ff.GetOrders(dtStart , 
       dtEnd , 
       TradingRoleCodeType.Buyer , 
       OrderStatuscodeType.Completed 
      ) ; 

按照一般的做法,保持独立分开计算,而不是他们在一个方法调用相结合,使代码更易于理解,更易于修改和更易于调试。

相关问题