使用从数据库检索到的DateTime进行减法给出奇怪的结果
问题描述:
我在做一些DateTime减法操作时遇到了一些麻烦,我从MySQL数据库收到了一些时间。所有非UTC时间都是美式格式。使用从数据库检索到的DateTime进行减法给出奇怪的结果
这是我收到的时候,它是在一个字符串的形式(我使用on Rails的Ruby的应用程序的数据库检索):
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 = 2017年4月10日12:46: 26日上午,当我跑这个代码最后):
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
我是如何处理从数据库中获取的时间的?无论我尝试什么,我都无法得到正常的结果。
答
我找到了解决我的问题(怎样的?)。
我也必须道歉,因为我没有完全描述我是如何使用我最初发布的代码。
事实证明,问题在于我曾试图在另一个脚本中执行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);
同样,也不清楚为什么这是发生了什么,但我已经解决了/有问题的解决方法了。如果有人知道为什么这个错误首先发生,请让我知道!
谢谢大家对您的输入!
不知道这是否会有所帮助,但我无法重现您的问题。我: “十四时13分34秒” http://prntscr.com/eujzg1 – NielW
我无法2017-04-10T15重现该问题:00:00.000Z为起始日期,以便别的东西在玩。数据库中是否存在此字段的空值? 的-736428.00结果:46:22.2744445装置736428天46个MINUES和22.27秒...或更精确地使用运行代码01/01/0001 12:00 AM和DateTime.Now之间差(4/10/2017 12:46 AM)。 – James