C# 如何从inapp服务器响应日期获取等效的UTC日期时间?

C# 如何从inapp服务器响应日期获取等效的UTC日期时间?,c#,asp.net,datetime,in-app-purchase,utc,C#,Asp.net,Datetime,In App Purchase,Utc,我正在给苹果服务打电话,以核实应用程序内的收据。下面是我打电话的服务 try { _url = ConfigurationManager.AppSettings["AppleServerUrl"]; var json = new JObject( new JProperty("receipt-data", receiptToken), new JPr

我正在给苹果服务打电话,以核实应用程序内的收据。下面是我打电话的服务

 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"]);
   }
我得到expireydate=“2017-05-03 15:08:55等/GMT”

现在我需要将此日期转换为日期时间(UTC)并保存到我的数据库中。当我尝试做同样的事情时,我得到了错误

该字符串未被识别为有效的日期时间。有一个从索引20开始的未知单词

在谷歌搜索时,我得到了下面的链接&尝试了链接中提到的东西

  • var expireydate=DateTime.ParseExact(“yyyy-MM-dd HH:MM:ss:fff”,resObj[“expires\u-date”].ToString(), 文化信息(不变量文化)

这给我带来了下面的错误

字符串未被识别为有效的日期时间

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


谢谢。

您可以通过删除
“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的东西。处理时区感知数据时处理日期处理