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(), 文化信息(不变量文化)
谢谢。您可以通过删除
“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的东西。处理时区感知数据时处理日期处理