2017-01-21 1 views
0

C#TimeZone関数の仕組みを学び、指定されたTimeZoneに時間を変換する方法について苦労しています。例えば、私がTimeZoneと時間で渡すところの手順を考えてみましょう - 時間を渡されたTimeZoneにどのように変換できますか?時間を特定のタイムゾーンに変換する

string proceduredatetime = "01/11/2017 10:17:34 AM" 
string tz = "P"; 
string convertedDT; 

convertedDT = ConvertToLocalTime(proceduredatetime, tz); 
Console.WriteLine("Procedure Date Time: " + proceduredatetime); 
Console.WriteLine("Timezone: " + tz); 
Console.WriteLine("Converted Date Time: " convertedDT); 

public static string ConvertToLocalTime(string proceduredatetime, string tz) 
{ 
String lastscantimelocalformat; 
string localtz; 

switch (tz) 
{ 
    case "C": 
     localtz = "Central Standard Time"; 
     break; 
    case "E": 
     localtz = "Eastern Standard Time"; 
     break; 
    case "M": 
     localtz = "Mountain Standard Time"; 
     break; 
    case "P": 
     localtz = "Pacific Standard Time"; 
     break; 
    default: 
     Console.WriteLine("Invalid tz."); 
     break; 
} 

if (localtz != null) 
{ 
    tzInfo ltz = tzInfo.FindSystemtzById(localtz); 
    //Lost on this step 

} 
} 
+0

「01/11/2017 10:17:34 AM」はどのタイムゾーンですか?私は、その質問に対する3つの合理的な答えを見ることができます:1.コンピュータのローカルタイムゾーン。 2. UTC。 3. 'ConvertToLocalTime'の呼び出しで何がペアになっても。 –

+0

その時刻はローカルサーバーの時刻です。私はそれをtzの値に変換したいと思っています。それが明確になるのに役立つのでしょうか? –

+0

このコードがサーバー上で実行されている場合は、はい。ありがとう。 –

答えて

1

proceduredatetimeが何であるかを知る必要がある場合。 UTCを始めることをお勧めします。 proceduredatetimeがUTCでない場合は、UTCに変換します。

あなたはこのようなDateTimeオブジェクトにproceduredatetimeを変えることができます:あなたは、現在の時間の使用を探している場合

DateTime myDate = DateTime.ParseExact(proceduredatetime); 

DateTime myDate = DateTime.UtcNow; 

その後、

myDateがUTCの場合:

DateTime convertedDateTime = TimeZoneInfo.ConvertTimeUtc(myDate, TimeZoneInfo.FindSystemTimeZoneById(localtz)); 

そのないUTC場合は、代わりにTimeZoneInfo.ConvertTimeを試すことができます。

DateTime convertedDateTime = TimeZoneInfo.ConvertTime(myDate, TimeZoneInfo.FindSystemTimeZoneById("SOURCE TIME ZONE"), TimeZoneInfo.FindSystemTimeZoneById(localtz)); 

convertedDateTimeは、指定されたタイムゾーンに変換日時でなければなりません。 .ToString("yyyy-MM-dd")や、文字列に戻したい書式を使用することができます。

+0

DateTimeOffsetを使用してください。 –

関連する問題