我試圖將轉換時間轉換爲用戶的時區,但我沒有諸如「太平洋標準時間」之類的Windows時區字符串。我所有的是一個字符串偏移,如「-07:00」。看起來我需要創建一個時間跨度。手動解析此字符串的唯一方法是?似乎應該有一種方法來使用字符串偏移量來轉換時間,但也許我錯過了一些東西。如何將字符串偏移量轉換爲c中的時間跨度#
我有這個,但它需要時區。我試圖修改它以使用偏移量,但您可以看到爲轉換創建的時間跨度,並且需要獲得我的時間偏移量。
static void Main(string[] args)
{
var currentTimeInPacificTime = ConvertUtcTimeToTimeZone(DateTime.UtcNow, "Pacific Standard Time");
//TimeSpan ts = new TimeSpan("-07:00");
Console.ReadKey();
}
static DateTimeOffset ConvertUtcTimeToTimeZone(DateTime dateTime, string toTimeZoneDesc)
{
if (dateTime.Kind != DateTimeKind.Utc) throw new Exception("dateTime needs to have Kind property set to Utc");
TimeSpan toUtcOffset = TimeZoneInfo.FindSystemTimeZoneById(toTimeZoneDesc).GetUtcOffset(dateTime);
var convertedTime = DateTime.SpecifyKind(dateTime.Add(toUtcOffset), DateTimeKind.Unspecified);
return new DateTimeOffset(convertedTime, toUtcOffset);
}
謝謝!太簡單了。我沒想到要尋找一種解析方法。 – KingOfHypocrites
'TimeSpan.Parse'對於問題的這一部分是正確的,但要小心'.ToLocalTime()',因爲它會在它運行的計算機的時區 - 這可能是服務器一些其他時區。最後一個代碼塊是正確的,但他說他沒有時區ID輸入。 –
如果你偏移字符串包含'+'字符,這不起作用。這必須先刪除。 – PaulG