1

日付と時刻を格納する 2 つの異なる列があります。1 つは保存日で、もう 1 つは時刻です。現地時間でそれを行う前は、正常に機能していました。今度はアリゾナの時間を設定したいので、日付時刻を UTC 時間に変換し、使用されたTimeZoneIfoのメソッドConvertTimeを使用してアリゾナの時刻を取得します。今私の問題は、これを使用して日付を取得できることですが、時間を保存しているときに、12 時間形式で来る時間を 24 時間に変換したいと考えています。私のコードは

DateTime UniversalScheduleDate = Convert.ToDateTime(txtDate.Text).ToUniversalTime();
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(Session["TimeZone"].ToString());
objSchdl.SDate = TimeZoneInfo.ConvertTime(UniversalScheduleDate, timeZoneInfo);
DateTime UniversalStartTime = Convert.ToDateTime(txtStartTime.Text).ToUniversalTime();
objSchdl.Stime = TimeZoneInfo.ConvertTime(UniversalStartTime, timeZoneInfo).ToString();

私を助けてください..

4

3 に答える 3

5

DateTimeKind.Utc と一緒に DateTimeParseを使用して変換してみてください

例:

DateTime UniversalScheduleDate = DateTime.SpecifyKind(
DateTime.Parse(txtDate.Text),DateTimeKind.Utc);

string formattedDate = DateTime.UniversalScheduleDate.ToString("HH:mm:ss tt");
于 2012-07-23T09:28:19.323 に答える
3

文字列表現からタイムゾーン情報を分離する必要があります。それらは完全に直交する概念です。

おそらく、ToString呼び出しでフォーマットを指定するだけでよいようです。

ToString("yyyy-MM-dd'T'HH:mm:ss", CultureInfo.InvariantCulture);

また、特定の形式で解析することも検討する必要があります。また、どのカルチャを使用するかを検討する必要があります。

また、夏時間への移行により、現地時間を世界時間に変換すると損失が発生する可能性があることに注意してください。.NET フレームワークでは、これを適切に処理するのは比較的困難ですが、心に留めておく必要があります。

最後に、それを呼び出すと、変換にシステムのローカルToUniversalTimeタイム ゾーンが使用されることに注意してください。それは本当に必要ですか?

于 2012-07-23T09:28:34.273 に答える
0

12時間形式で時間をお過ごしください。DBに保存する直前に、以下のスクリプトを使用して24時間形式に変更して保存できます。

以下のコードがお役に立てば幸いです。

        Response.Write("With Seconds" + "<br />");

        Response.Write("24 Hour Date Format : " + DateTime.Now.ToString("HH:mm:ss tt") + "<br />");
        Response.Write("Without Seconds" + "<br />");

        Response.Write("24 Hour Date Format : " + DateTime.Now.ToString("HH:mm tt") + "<br />");
于 2012-07-23T09:35:25.600 に答える