2017-05-08 18 views
0

我打电话给苹果的服务,以验证应用收据。以下是我打电话的服务。如何从inapp服务器响应日期获取等效的UTC日期时间?

try 
     { 
      _url = ConfigurationManager.AppSettings["AppleServerUrl"]; 
      var json = new JObject(
        new JProperty("receipt-data", receiptToken), 
        new JProperty("password", "mySecretKey")).ToString(); 

      ASCIIEncoding ascii = new ASCIIEncoding(); 
      byte[] postBytes = Encoding.UTF8.GetBytes(json); 
      var request = System.Net.HttpWebRequest.Create(_url); 
      request.Method = "POST"; 
      request.ContentType = "application/json"; 
      request.ContentLength = postBytes.Length; 
      using (var stream = request.GetRequestStream()) 
      { 
       stream.Write(postBytes, 0, postBytes.Length); 
       stream.Flush(); 
      } 

      var sendResponse = request.GetResponse(); 
      string sendResponseText = ""; 
      using (var sr = new StreamReader(sendResponse.GetResponseStream())) 
      { 
       sendResponseText = sr.ReadToEnd().Trim(); 
      } 


      var resObj = (JObject)JsonConvert.DeserializeObject(sendResponseText.ToString()); 
      var latestReceipt = resObj["latest_receipt"]; 
      resObj = (JObject)resObj["latest_receipt_info"].LastOrDefault(); 

      var expiryDate = Convert.ToDateTime(resObj["expires_date"]); 
    } 

我得到expiryDate =“2017-05-03 15:08:55 Etc/GMT”;

现在我需要将此日期转换为日期时间(UTC)&保存到我的数据库。虽然试图做到这一点,我收到错误。

该字符串未被识别为有效的DateTime。有一个未知的字开始索引20

虽然谷歌搜索我得到了下面的链接&尝试链接中提到的东西。

这会引发下面的错误。

字符串未被识别为有效的DateTime。

如何将返回的日期转换为等效的UTC日期时间?

谢谢。

回答

0

您可以通过删除"Etc"来转换字符串值。有可能是一个更强大的方式,但这部作品在紧要关头

Parse(Regex.Replace("2017-05-03 15:08:55 etc/GMT", "[a-zA-Z]{3}/", "")) 

这将产生

"2017-05-03 15:08:55 GMT" 

这就是说,你绝对应该使用或者System.DateTimeOffset或类似NodaTime。在处理时区感知数据时处理日期处理。

相关问题