簡體   English   中英

從字符串捕獲UTC時間並將其格式化為所有DateTime

[英]Capture UTC Time From String And Format All DateTime To It

我有一個以字符串格式返回的日期

string utcdt = "2017-01-01T15:48:00-07:00";

如何從上面的字符串中提取山區時間07:00並將任何日期格式化為該區域格式?

我不想更改計算機上的時區,因為返回到變量utcdt的UTC時間可能會有所不同,並且WinForm應用程序中使用的所有其他日期都需要符合相同的時區規范。

編輯
我正在使用FEDEx API,這是返回日期的一種格式

string utcdt = "2017-01-01T15:48:00-07:00";

現在稍后在應用程序中

foreach (TrackingDateOrTimestamp timestamp in trackDetail.DatesOrTimes)
    Console.WriteLine("{0}: {1}", timestamp.Type, timestamp.DateOrTimestamp);

哪個返回我當地時間的數據-含義

01/01/2017 17:48:00

我正在嘗試提出一種解決方案,以使日期保持一致。

您可以使用DateTimeOffset類將字符串解析為本地時間,並將其與UTC進行偏移。 然后,您可以將偏移量另存為TimeSpan

稍后再使用DateTimeOffset類轉換另一個DateTime您必須使用相同的偏移量:

string dto = "2017-01-01T15:48:00-07:00";

DateTimeOffset dateTimeOffset = DateTimeOffset.Parse(dto);

DateTime utcDateTime = dateTimeOffset.UtcDateTime;
TimeSpan timezoneOffset = dateTimeOffset.Offset;


MessageBox.Show("UTC DateTime: " + utcDateTime);
MessageBox.Show("Offset: " + timezoneOffset);

DateTimeOffset nowWithOffset = DateTimeOffset.UtcNow.ToOffset(timezoneOffset);

MessageBox.Show("Now in other timezone: " + nowWithOffset.ToString("O"));

請注意其他評論者寫了什么:這不能正確處理夏時制。 為了解決這個問題,您實際上需要知道實時時區。

暫無
暫無

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

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