給定特定的TimeZoneInfo實例如何在指定的時區創建新的DateTime實例?例如,如果我有:如何在特定時區中創建DateTime的新實例?
var tz = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
var date = new DateTime(2017, 1, 1, 0, 0, 0, DateTimeKind.Unspecified);
Console.WriteLine(TimeZoneInfo.ConvertTime(date, tz));
我總是得到2016年12月31日晚上7:00:00點不管什麼DateTimeKind我定義(UTC,本地或未指定)。
如何在美國東部標準時間的0:00:00宣佈2017年1月1日的新日期時間?
有很多方法,其中之一使用['TimeZoneInfo.BaseUtcOffset'](https://msdn.microsoft.com/en-us/library/system.timezoneinfo.baseutcoffset(v = vs.110).aspx ),還有['TimeZoneInfo.GetUtcOffset(DateTime)'](https://msdn.microsoft.com/en-us/library/bb396378(v = vs.110).aspx)和['TimeZoneInfo.GetUtcOffset(的DateTimeOffset)'](https://msdn.microsoft.com/en-us/library/bb459779(v = vs.110)的.aspx)。 –
你能解釋一下你的預期產出嗎?您是否想將* DateTime *從*特定時區轉換爲當地時間? –
@FedericoDipuma不,我想爲特定時區定義新的特定日期時間。例如,我想在2017年1月1日美國東部標準時間的日期時間實例。我不想依賴本地服務器時間,因爲服務器可能不在我的客戶端。所以我爲每個客戶端保存了TimeZoneInfo,我想基於此實例化時間。 – Marko