簡體   English   中英

使用從數據庫中檢索到的DateTime進行減法運算得出奇怪的結果

[英]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

我如何處理從數據庫中獲得的時間有什么問題嗎? 無論嘗試如何,我似乎都無法獲得正常結果。

我在提琴手中使用相同的輸入和語法對其進行了嘗試,並且得到了預期的結果。 檢查Debug.Log在內部如何處理TimeSpan對象。 在將其傳遞給Debug.Log之前,還請嘗試打印這些值(以小時/分鍾/秒為單位的差異),以檢查其是否報告正確的結果。

在此處輸入圖片說明

我找到了解決我問題的方法(有點?)。

我也必須道歉,因為我沒有完全描述我是如何使用最初發布的代碼的。

事實證明,問題在於我正試圖在另一個腳本中執行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM