我在使用从MySQL数据库收到的时间做一些DateTime减法时遇到了一些麻烦。所有非UTC时间都采用美国格式。
这是我收到的时间(我使用Ruby on Rails应用程序从数据库中检索它),它以字符串的形式出现:
2017-04-10T15:00:00.000Z
然后我解析字符串以将其转换为DateTime并对常规DateTime进行调试(没有偏移量):
start_time = DateTimeOffset.Parse(event_time[2]);
Debug.Log(start_time.DateTime);
然后显示以下内容:
4/10/2017 3:00:00 PM
这看起来类似于我通常使用的格式(即M / dd / yyy h / mm / ss tt),因此我会与当前时间进行快速比较,以确切地检查我与它的距离(供参考) ,DateTime.Now = 4/10/2017 12:46:26 AM我最后运行此代码时:)
TimeSpan tmp;
tmp = (start_time.DateTime).Subtract(DateTime.Now);
Debug.Log(tmp)
然而,这给了我以下结果:
-736428.00:46:22.2744445
使用以下操作进行此类操作可以得到正常结果:
DateTime tmp2;
TimeSpan tmp3;
tmp2 = DateTime.Now.Add(new TimeSpan(0, 0, 360));
tmp3 = tmp2.Subtract(DateTime.Now)
Debug.Log(tmp2);
Debug.Log(tmp3);
正常结果:
4/10/2017 12:52:26 AM
00:06:00
我如何处理从数据库中获取的时间有什么问题吗?无论我尝试什么,我似乎无法得到正常的结果。
答案 0 :(得分:0)
我用fiddler尝试了相同的输入和语法,我得到了预期的结果。检查Debug.Log如何在内部处理TimeSpan对象。还要尝试在将值传递给Debug.Log之前打印值(小时/分钟/秒的差异),以检查它是否报告正确的结果。
答案 1 :(得分:0)
我找到了解决问题的方法(有点?)。
我也必须道歉,因为我没有完全描述我如何使用我最初发布的代码。
事实证明问题在于我是在尝试在另一个脚本中执行DateTime减法(我在Unity中执行此操作,就像我之前提到的那样)。
例如,这是代码在Buttonscript.cs脚本中给出了错误的输出:
TimeSpan tmpButtonController;
tmpButtonController = HighscoreController.GetComponent<HSController>().start_time.DateTime.Subtract(DateTime.Now);
Debug.Log(tmpButtonController);
但是如果我做同样的事情,但在我解析字符串的同一个脚本(HSController.cs)中,一切都很好:
TimeSpan tmpHSController;
tmpHSController = start_time.DateTime.Subtract(DateTime.Now);
Debug.Log(tmpHSController);
同样,不确定为什么会发生这种情况,但我现在已经解决/解决了这个问题。如果有人知道为什么首先发生这个错误,请告诉我!
感谢大家的投入!