[英]Subtraction using DateTime retrieved from database giving strange results
我在從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)。當我最后運行此代碼時=現在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
我如何處理從數據庫中獲得的時間有什么問題嗎? 無論嘗試如何,我似乎都無法獲得正常結果。
我找到了解決我問題的方法(有點?)。
我也必須道歉,因為我沒有完全描述我是如何使用最初發布的代碼的。
事實證明,問題在於我正試圖在另一個腳本中執行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);
同樣,不確定為什么會這樣,但是我現在已經解決/已經有解決此問題的方法。 如果有人首先知道為什么發生此錯誤,請告訴我!
謝謝大家的投入!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.