C# 从文件中读取JSON日期

C# 从文件中读取JSON日期,c#,json,C#,Json,我将日志作为JSON写入文本文件。在该文件中,调用obejct LogTime的值为 "1378289277591". *{"LogTime":"Date(1378290565240)"}* 考虑以下代码: Public Class Sync{ public async Task<CallModel> ConvertCallFileToCallObejct(string path) { try {

我将日志作为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);
            }
        }
}
问题是,
Call.LogTime
9/4/2013 10:29:25 AM但使用Chrome控制台和新日期(1378290565240),结果是9/4/2013 14:59:25 PM


问题出在哪里?

我不确定您的时区是什么,但我希望它是UTC日期时间。

我不确定您的时区是什么,但我希望它是UTC日期时间。

请尝试下面的代码

// 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) );
试试下面的代码

// 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) );

根据你的个人资料,你住在伊朗,那里的时区是UTC+3:30。然而,在4月份,伊朗使用夏令时,因此实际时区为UTC+4:30

这意味着
9/4/2013 10:29:25 AM
的UTC时间是伊朗当地时间
9/4/2013 14:59:25 PM

根据,JSON字符串中给定的时间被视为UTC时间,并被反序列化为UTC时间。您可以检查返回
DateTimeKind.Utc
Call.LogTime
表达式的返回值。因此,您在C代码中看到的是UTC时间


现在,Chrome也将这个时间视为UTC时间,但它似乎根据您的时区显示为本地时间。我不是100%确定,但我认为Chrome在选择如何显示日期时会使用您的首选语言列表,所以请尝试使用它-我不知道它到底是做什么的,但我记得当更改语言顺序影响时间的解释时,会出现类似的问题。当然,这取决于你到底想达到什么——在我看来,这两个值都是正确的,因为它是在同一时间。

根据你的个人资料,你住在伊朗,那里的时区是UTC+3:30。然而,在4月份,伊朗使用夏令时,因此实际时区为UTC+4:30

这意味着
9/4/2013 10:29:25 AM
的UTC时间是伊朗当地时间
9/4/2013 14:59:25 PM

根据,JSON字符串中给定的时间被视为UTC时间,并被反序列化为UTC时间。您可以检查返回
DateTimeKind.Utc
Call.LogTime
表达式的返回值。因此,您在C代码中看到的是UTC时间


现在,Chrome也将这个时间视为UTC时间,但它似乎根据您的时区显示为本地时间。我不是100%确定,但我认为Chrome在选择如何显示日期时会使用您的首选语言列表,所以请尝试使用它-我不知道它到底是做什么的,但我记得当更改语言顺序影响时间的解释时,会出现类似的问题。当然,这取决于你到底想达到什么-依我看,这两个值都是正确的,因为它是同一时间。

可能时间是UTC?你的时区是什么?伊朗时区是UTC+3:50对吗?实际上,在夏时制期间,伊朗是UTC+4:30,9/4属于DST,这正是区别所在。我想Chrome和你的C代码对它的处理方式是不同的。
调用.LogTime.Kind
返回什么?我猜Utc?可能时间是Utc?你的时区是什么?伊朗的时区是Utc+3:50,对吗?事实上,在夏时制期间,伊朗是Utc+4:30,9/4属于DST,这正是区别。我猜Chrome和你的C#代码对待它的方式不同。
调用.LogTime.Kind
返回什么?我想是Utc?