我有一个从targetProcess获取信息并将该信息放入sql表中的应用程序接口。
当targetProcess字段是date时,问题就出现了,因为我是以json date "/Date(1409202000000-0500 )/"的形式收到它的。
如何在c#中将此json日期转换为Datetime?
我一直在尝试添加额外的引号,就像在这个StackOverflow Post中添加引号一样,但它不起作用。
我尝试将单词Date替换为只使用1409202000000-0500 in
DateTime dotNetDate = new DateTime(1970, 1, 1);
dotNetDate = dotNetDate.AddMilliseconds(Convert.ToInt64(1409202000000-0500) 我使用too JSON.NET作为bellow
string sa = "/Date(1409202000000-0500 )/"
DateTime dt = new DateTime();
dt = JsonConvert.DeserializeObject<DateTime>(sa);但它也不能工作,
那么问题是,我是否可以在c#中将这个json日期转换为is....How时间?
发布于 2017-03-31 09:01:46
您需要手动将字符串“程序化地”括在引号中,以确保其格式正确无误:
string sa = @"""" + "/Date(1409202000000-0500 )/" + @"""";
DateTime dt = JsonConvert.DeserializeObject<DateTime>(sa);如果您需要多次调用它(看起来您确实需要),只需将包装责任转移到一个方法:
public string WrapStringInQuotes(string input)
{
return @"""" + input + @"""";
}发布于 2017-03-31 09:10:34
问题出在日期字符串上。而不是
string sa = "/Date(1409202000000-0500 )/"试一试
string sa = @"""/Date(1409202000000-0500)/""";更改您的代码:
string sa = @"""/Date(1409202000000-0500)/""";
DateTime dt = new DateTime();
dt = JsonConvert.DeserializeObject<DateTime>(sa);
// dt = "2014-08-28 3.00.00 PM"发布于 2020-05-03 02:44:46
这就是我的函数。甚至有一种可能是,你可以得到一个更短的Json日期,比如在OpenweatherAPI中,日出和日落,那么在这种情况下,你需要乘以1000。我的函数可以处理这两种情况。
public static DateTime GetDateTimeFromJSON(long jsonDateTime, bool shorter = false)
{
return JsonConvert.DeserializeObject<DateTime>($"\"\\/Date({ (shorter ? jsonDateTime * 1000 : jsonDateTime) })\\/\"", new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
}).ToLocalTime();
}https://stackoverflow.com/questions/43130444
复制相似问题