-1

こんにちは、 datetime について疑問があります。

については、system.DateTime.Now現在のローカル日付を返します。

以下のコードは、現在のインドの日時を取得するのに役立ちます

Dim IndianTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")
Dim IndianDateTime = TimeZoneInfo.ConvertTime(USDateTime, IndianTimeZoneInfo)

しかし、現時点では、米国と英国などの国では日時が異なります。簡単なコードで管理するにはどうすればよいですか?

上記のコードの主な疑問は、インド時間のみが取得されていることです. , しかし、米国または他の国の時間にしたい場合, 国ごとにコードを分離する必要があります (そうであれば, たくさんのコードを書きます. または他のアイデアがありますか?

私に助言してください。ありがとう !

編集

簡単な私の質問は、さまざまな国の現在の日時を保存する方法ですか?

4

2 に答える 2

2

@RameshRajendran ここに記事と記事のコードがあり、プロジェクトを完了できないと確信しています。しかし、うまくいけば、別の視点からそれを見るのに役立ちます. @varocarbasが指摘したように、最終的にコンパイルされた情報を保存するためのテーブルを作成するのに役立ちます.

記事へのリンク: http://msdn.microsoft.com/en-us/library/vstudio/bb397781(v=vs.110).aspx

SupportsDaylightSavingTime プロパティを使用して、タイムゾーンのルールがあるかどうかを確認できます。

Visual Studio のオブジェクト ブラウザーを使用して、System.TimeZoneInfo のメンバーを表示することもできます。

これを、コントローラーのインデックス ActionResult とインデックス ビューの html ヘルパーで次のようにテストしました。繰り返しますが、これは、不快に思われる「大量の作業」ブロックを通過する方法を確認するのに役立ちます.

このコードは C# を使用して記述しましたが、VB で同等のものを作成しても問題はないと確信しています。

【コントローラー】

// Sample code from the article.
// Note: the collection only contains full hour offsets (i.e. New Delhi is in a half hour zone)
ReadOnlyCollection<TimeZoneInfo> tzCollection;
tzCollection = TimeZoneInfo.GetSystemTimeZones();

foreach (TimeZoneInfo timeZone in tzCollection)
    {
        Console.WriteLine("   {0}: {1}", timeZone.Id, timeZone.DisplayName);
    }

// My modified version of its use.
// this code will create a dropdownlist with all the timezones available on my machine.
var theTimesInfo = new List<TimeZoneInfo>(tzCollection);
var theZones = new SelectList(theTimesInfo, "Id", "DisplayName", 1);

ViewData["theZones"] = theZones;

string myLocalZone = "Eastern Standard Time";
TimeZoneInfo myLocalDateTime = TimeZoneInfo.FindSystemTimeZoneById(myLocalZone);

string theZoneSelected = Request.QueryString.Get("theZones");
if (theZoneSelected == string.Empty || theZoneSelected == null)
{
    theZoneSelected = myLocalZone;
}

TimeZoneInfo selectedTimeZone = TimeZoneInfo.FindSystemTimeZoneById(theZoneSelected);
DateTime CurrentTimeZoneDateAndTime = TimeZoneInfo.ConvertTime((DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified)), myLocalDateTime, selectedTimeZone);

ViewBag.CurrentTimeZoneSelected = selectedTimeZone.DisplayName.ToString();
ViewBag.CurrentDateTimeSelected = CurrentTimeZoneDateAndTime.ToString();

[更新]ビューコードを編集して、返された値を表示しました。

[ 意見 ]

<p>
    The Select TimeZone is: @ViewBag.CurrentTimeZoneSelected<br />
    The current Date and Time for the Selected TimeZone is: @ViewBag.CurrentDateTimeSelected
</p>

<form>
    @Html.DropDownList("theZones", ViewData["theZones"] as SelectList)
    <input type="submit" name="submit" value="Select This Time Zone" />
</form>

foreach ループを使用してコレクションを反復処理し、それを db テーブルに追加できます。次に、必要に応じて、個々のエントリをテーブルに追加するか、必要に応じて +- を調整できます。

于 2013-09-29T15:18:07.387 に答える