簡體   English   中英

將UTC中的DateTime轉換為我的“本地”時間?

[英]Converting DateTime in UTC to my “local” time?

我正在與MongoDB合作,嘗試使用適當的KindBsonDate反序列BsonDate DateTime DateTime序列化到MongoDB時,它以UTC格式保存,反序列化時,它也以UTC格式返回。

我的問題是,我似乎無法將從Mongo得到的DateTime轉換回我的本地DateTime (UTC到EST)。 我很確定我可以通過刪除時區的UTC時間偏移量( AddHours )解決問題,但是我很確定DateTime可以為我做到這一點,並且可以處理應用程序運行的任何時區。

// Deserializing the DateTime object
DateTime eventTimeStamp = (DateTime)aDoc[MongoStrings.Log_Field_TimeStamp];
Console.Out.WriteLine("UtcDate: " + eventTimeStamp);
Console.Out.WriteLine("Locale : " + eventTimeStamp.Kind);

// First attempt at conversion
DateTime localTime = DateTime.SpecifyKind(eventTimeStamp, DateTimeKind.Local);
Console.Out.WriteLine("NewTime: " + localTime);
Console.Out.WriteLine("Locale : " + localTime.Kind);

// Another attempt at conversion
DateTime localTime2 = new DateTime(eventTimeStamp.Ticks, DateTimeKind.Local);
Console.Out.WriteLine("NewTim2: " + localTime2);
Console.Out.WriteLine("Locale : " + localTime2.Kind);

上面的代碼產生以下輸出

UtcDate: 1/29/2016 2:54:05 PM
Locale : Utc
NewTime: 1/29/2016 2:54:05 PM
Locale : Local
NewTim2: 1/29/2016 2:54:05 PM
Locale : Local

生成該日志的本地時間是9:54:05 AM

這可能對您有用:

// This is your code
// Deserializing the DateTime object
DateTime eventTimeStamp = (DateTime)aDoc[MongoStrings.Log_Field_TimeStamp];
Console.Out.WriteLine("UtcDate: " + eventTimeStamp);
Console.Out.WriteLine("Locale : " + eventTimeStamp.Kind);

// This is new code
Console.Out.WriteLine("LocalDate: " + eventTimeStamp.ToLocalTime());

原因是您的localTime變量設置為與UTC中的時間戳完全相同的時間戳,您只是說應該將其視為本地時間。 但是此設置為本地時間不會轉換時間,只是說這是哪種時間,以便其他方法(例如ToLocalTime)知道該怎么做...

如果要在變量中使用該本地時間,則可能是這樣的:

DateTime localTime = eventTimeStamp.ToLocalTime();

而且我認為它無需設置種類即可工作。 如果沒有,你知道如何設置種類...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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