2016-11-11 5 views
1

以下のコードは、現在の現地時間でのメッセージをユーザーに表示しています。これは、私のlocalhostでうまく動作しますが、サーバにアップロードした後、サーバ時間を示します。どのようにISTに変換しますか?asp.netで現地時間でウェルカムメッセージを表示

private void admin_Default2_Load(object sender, EventArgs e) 
{ 
    if (DateTime.Now.Hour < 12) { 
     lblGreeting.Text = "Good Morning"; 
     lblDate.Text = Convert.ToString(DateTime.Now); 
    } else if (DateTime.Now.Hour < 17) { 
     lblGreeting.Text = "Good Afternoon"; 
     lblDate.Text = Convert.ToString(DateTime.Now); 
    } else { 
     lblGreeting.Text = "Good Evening"; 
     lblDate.Text = Convert.ToString(DateTime.Now); 
    } 
} 
+0

JavaScriptでブラウザでこれを実行した場合は、*遠方の方がよいでしょう。 *タイムゾーンが何であるか*仮定しないでください –

+0

[ユーザーのタイムゾーンを決定する](http://stackoverflow.com/questions/13/determine-a-users-timezone) - JavaScriptを使用してタイムゾーンを取得するか、ユーザー。 –

+0

ISTがユーザーにとって適切なタイムゾーンであると仮定しているロジックは何ですか?ユーザーはインド国内のユーザーに限定されていますか? –

答えて

0

はちょうどあなたがISTをしたい場合はUTC &へのあなたの現在の時間が5.5時間を追加変換します

if (DateTime.UtcNow.AddHours(5.5).Hour < 12) { 
    lblGreeting.Text = "Good Morning"; 
    lblDate.Text = Convert.ToString(DateTime.UtcNow.AddHours(5.5)); 
} else if (DateTime.UtcNow.AddHours(5.5).Hour < 17) { 
    lblGreeting.Text = "Good Afternoon"; 
    lblDate.Text = Convert.ToString(DateTime.UtcNow.AddHours(5.5)); 
} else { 
    lblGreeting.Text = "Good Evening"; 
    lblDate.Text = Convert.ToString(DateTime.UtcNow.AddHours(5.5)); 
} 
+0

これは誰かがコピーする標準的な間違いですか?このフレームワークには、ユーザーのタイムゾーンを知っていると仮定して、タイムゾーンを切り替えるためのライブラリがあります。 DSTルールの変更により、オフセットを格納するだけでは十分ではありません(少なくとも) –

+0

ISTタイムゾーンのオフセットは、1000音符の継続的な循環と同じく、新しい法律で変更するのが難しいと同じです。 –

-2

ISTは+5です:世界時先に30時間ので、あなたは以下のコードを使用することができます

 if (DateTime.Now.ToUniversalTime().AddHours(5).AddMinutes(30).Hour < 12) 
     { 
      lblGreeting.Text = "Good Morning"; 
      lblDate.Text = Convert.ToString(DateTime.Now); 
     } 
     else if (DateTime.Now.ToUniversalTime().AddHours(5).AddMinutes(30).Hour < 17) 
     { 
      lblGreeting.Text = "Good Afternoon"; 
      lblDate.Text = Convert.ToString(DateTime.Now); 
     } 
     else 
     { 
      lblGreeting.Text = "Good Evening"; 
      lblDate.Text = Convert.ToString(DateTime.Now); 
     } 
+0

このような値をハードコードすることは**非常に悪い考えです。このコードは、夏時間が変わるたびに(約6か月?)入ります。 –

+0

UniversalTimeは夏時間に従わないため、ISTは常に+5:30時間先です。 – Ratna

+0

本当ですか?来月は法律が変わらないと確信していますか?来年?ベネズエラがしたように、1週間の通知で?あなたは1000のノートが予告なしに取り下げられないと確信していますか? –

0
DateTime serverTime = DateTime.Now; // gives you current Time in server timeZone 
DateTime utcTime = serverTime.ToUniversalTime; // convert it to Utc using timezone setting of server computer 
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 
DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, tzi); // convert from utc to local 
if (localTime < 12) { 
     lblGreeting.Text = "Good Morning"; 
     lblDate.Text = Convert.ToString(localTime); 
    } else if (localTime < 17) { 
     lblGreeting.Text = "Good Afternoon"; 
     lblDate.Text = Convert.ToString(localTime); 
    } else { 
     lblGreeting.Text = "Good Evening"; 
     lblDate.Text = Convert.ToString(localTime); 
    } 
+0

このタイムゾーン外の誰かがサイトを使用しようとすると、これが破損します。 *ユーザー*がこれを設定として決定するか、ブラウザにUTC時刻を送信し、JavaScriptを使用してフォーマットすることをお勧めします。 –

+0

@PanagiotisKanavos OPはIST – Sajeetharan

+0

を言及しました。これを忘れてしまった人は、「India Standard Time」をユーザーのユーザー設定の優先ゾーンを指定するうえで最適な方法です。 –

関連する問題