我有各種各樣的時間戳存儲在Mongo集合中,有些作爲浮點數,有些作爲整數。轉換時間戳存儲在一個Mongo集合
它們全部存儲在BST中,服務器很快就會切換到UTC。如何在Mongo內將它們轉換爲UTC時間戳?
在MySQL中我可以這樣做:
UPDATE `table` SET `field` = CONVERT_TZ(`field`, 'Europe/London', 'UTC');
是否有蒙戈相同呢?
我有各種各樣的時間戳存儲在Mongo集合中,有些作爲浮點數,有些作爲整數。轉換時間戳存儲在一個Mongo集合
它們全部存儲在BST中,服務器很快就會切換到UTC。如何在Mongo內將它們轉換爲UTC時間戳?
在MySQL中我可以這樣做:
UPDATE `table` SET `field` = CONVERT_TZ(`field`, 'Europe/London', 'UTC');
是否有蒙戈相同呢?
您必須使用您選擇的語言並逐個更新它們。它應該像加載數據並重寫它的for
循環一樣簡單。
只要仔細檢查您選擇的語言如何處理跨時區的時間戳。進行這種數據更改會對生產代碼產生各種意想不到的影響。
幾點考慮有關日期在蒙戈:
建議不要使用DateTime.Parse。 關於DateTime如何格式化,您將會遇到各種各樣的時區問題。
取而代之的只是使用UTC風格的DateTime構造函數之一。
例子:
var dateTime = new DateTime(2011, 5, 5, 0, 0, 0, DateTimeKind.Utc);
希望你覺得它有用。
時間戳通常採用UTC,而不是特定的時區。所有使用的日期/時間庫返回的時間戳都是自1970年1月1日UTC以來的秒數(或毫秒)。檢查用於創建時間戳的庫的文檔以確保。
這意味着你應該沒問題,除非你使用了一個不遵循這個約定的日期/時間庫,或者以某種方式自己計算了時間戳並考慮了時區。
例如在JavaScript中,如果你存儲從new Date().getTime()
返回的值後來覺得值傳遞給new Date(...)
不同的系統,你最終會以相同的絕對日期/時間,無論這兩個系統的時區。 Ruby也是如此,在一臺機器上執行Time.new.to_i
,然後在另一臺機器上運行Time.at(...)
,您將得到相同的絕對日期/時間。當我說「絕對日期/時間」時,我的意思是它的UTC時間將是相同的,很可能系統會將其顯示在當地時區,但這正是您想要的。
他不會將日期存儲爲Date對象,而是存儲和浮點數。 – Theo
另外,你爲什麼假設他使用C#?看看其他問題,他問他們主要是關於PHP。 – Theo