PayPal日期时间(payment_date)解析问题

PayPal发送付款datetime如:

09%3A37%3A22 +十一月+ 18%2C + 2012 + PST

我尝试通过此代码转换它但获得exception。

关于如何解析它的任何线索?

谢谢!

 DateTime paymentDate; DateTime.TryParse(WebUtility.HtmlDecode(r["payment_date"]), out paymentDate); n.PaymentDate = paymentDate; // payment_date=09%3A37%3A22+Nov+18%2C+2012+PST 

这应该是诀窍:

 DateTime paymentDate; DateTime.TryParseExact(HttpUtility.UrlDecode(r["payment_date"]), "HH:mm:ss MMM dd, yyyy PST", CultureInfo.InvariantCulture, DateTimeStyles.None, out paymentDate); 

PayPal的文档中有各种日期时间格式。 我使用此方法来解析它,并将其转换为UTC:

 ///  /// Tries to parse PayPal formatted date and time and converts it to an UTC. ///  public static bool TryParsePaypalDatetimeToUtc(this string paypalDatetime, out DateTime retValue) { DateTime paymentDate; // PayPal formats from docs string[] formats = new string[] { "HH:mm:ss dd MMM yyyy PDT", "HH:mm:ss dd MMM yyyy PST", "HH:mm:ss dd MMM, yyyy PST", "HH:mm:ss dd MMM, yyyy PDT", "HH:mm:ss MMM dd, yyyy PST", "HH:mm:ss MMM dd, yyyy PDT" }; if (false == DateTime.TryParseExact(paypalDatetime, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out paymentDate)) { retValue = DateTime.MinValue; return false; } retValue = TimeZoneInfo.ConvertTimeToUtc(paymentDate, TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")); return true; }