我将日志作为JSON写入文本文件。在文件中,调用obejct LogTime值为
"1378289277591".
*{"LogTime":"Date(1378290565240)"}*
请考虑以下代码:
Public Class Sync{
public async Task<CallModel> ConvertCallFileToCallObejct(string path)
{
try
{
using (var sr = new StreamReader(path))
{
string callText = await sr.ReadToEndAsync();
var call = new JavaScriptSerializer().Deserialize<CallModel>(callText);
return call;
}
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
}
}
我将调用文件转换为调用对象:
var sync = new Sync();
CallModel call = sync.ConvertCallFileToCallObejct(e.FullPath).GetAwaiter().GetResult();
问题是Call.LogTime
9/4/2013 10:29:25 AM ,但使用Chrome控制台和新日期(1378290565240),结果为 9/4 / 2013 14:59:25 PM
有什么问题?
答案 0 :(得分:2)
尝试以下代码
// JSON received from server is in string format
var jsonString = '{"date":1251877601000}';
//use JSON2 or some JS library to parse the string
var jsonObject = JSON.parse( jsonString );
//now you have your date!
alert( new Date(jsonObject.date) );
答案 1 :(得分:1)
我不确定你的时区是什么,但我希望它的UTC日期时间。
答案 2 :(得分:1)
根据您的个人资料,您居住在伊朗,时区为UTC + 3:30。但是,在4月份,伊朗使用夏令时,因此实际时区为UTC + 4:30。
这意味着9/4/2013 10:29:25 AM
的UTC时间在伊朗当地时间9/4/2013 14:59:25 PM
。
根据ECMA specification,您的JSON字符串中给出的时间被视为UTC时间,并且它被反序列化。您可以检查返回Call.LogTime
的{{1}}表达式的返回值。因此,您在C#代码中看到的是UTC时间。
现在,Chrome还将此时间视为UTC时间,但根据您的时区,它似乎会将其显示为当地时间。我不是百分百肯定,但我认为Chrome在选择显示日期时会使用您的首选语言列表,所以尝试使用它 - 我不知道它到底是做什么的,但我记得更改时的类似问题语言顺序影响了时间的解释。当然,这取决于你想要达到的目的 - IMO,两个值都是正确的,因为它是同一时间。