如何解决无法在C#中将UTC TIME字符串日期转换为大纪元时间
我使用rest api从azure中读取了azure健康检查。以下是我的回复
{
"name": "current","reasonType": "","occuredTime": "2020-07-31T11:02:22Z","reasonChronicity": "Persistent","reportedTime": "2020-08-22T09:36:18.1858299Z"
}
我想将报告的时间转换为纪元时间格式。 我的代码是
var azobject = saas.ToObject<JObject>();
var ty = azobject["reportedTime"];
var ssa = DateTime.Parse(ty.ToString());
var dateTimeOffset = new DateTimeOffset(ssa);
var unixDateTime = dateTimeOffset.ToUnixTimeSeconds();
值完全不同,并且始终显示本地时间。处理此代码后,azobject [“ reportedTime”]格式的值与我从响应中得到的值完全不同({22/08/2020 11:31:上午43点}有T,而z不存在。
解决方法
这基本上是因为.net json包重写了类型转换的方法。如果要获得与原始结果相同的结果,请执行以下操作:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string url = "https://management.azure.com//subscriptions/xxxxxx?api-version=xxxx-xx-xx-xx";
string tokenbear = "eyJ0exxxxxxPw";
WebRequest request = HttpWebRequest.Create(url);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer",tokenbear);
var test = client.GetAsync(url);
var b = test.Result.Content.ReadAsStringAsync().Result;
JObject json = JObject.Parse(b);
string test3 = json["properties"].ToString();
Console.WriteLine(test3 + "\n");
var settings = new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-ddTH:mm:ss.fffffffZ",DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
var test2 = json["properties"]["reportedTime"];
var _test2 = JsonConvert.SerializeObject(test2,settings);
_test2 = _test2.Replace("\"","");
Console.WriteLine(_test2.ToString());
}
}
}
}
然后,您将获得与响应中相同的值:
获取原始数据后,您可以执行所需的处理。在我这边没问题,请尝试一下。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。