5

varchar(5)テーブルに24時間形式の時間と分を含む列があります。この24時間形式を12時間形式に変換し、最後にこの12時間形式の時刻をDate値とともにDateTime変数に埋め込みます。以下はデモンストレーションの例です。

例えば

8:18を8:18:00AMに変換してから、DBのDateTime列に格納できるように、8/10/20128:18:50AMのような日付を埋め込む必要があります。

22:20......10:20:00 PM.......8/10/2012 10:20:00 PM   

日付は現在の日付ではなく、2012年8月8日や2012年7月8日のような任意の日付値にすることができます

4

4 に答える 4

11

あなたはこのようなことをすることができます:

string input = "22:45";

var timeFromInput = DateTime.ParseExact(input, "H:m", null, DateTimeStyles.None);

string timeIn12HourFormatForDisplay = timeFromInput.ToString(
    "hh:mm:ss tt", 
    CultureInfo.InvariantCulture);

var timeInTodayDate = DateTime.Today.Add(timeFromInput.TimeOfDay);

そして今、考慮すべき重要な部分:

  • 解析の形式はを使用する"H:m"ため、1桁の時間または分の接頭辞にゼロを使用しない24H値を想定しています。
  • 印刷用の形式は"hh:mm:ss tt"、希望する形式であるように見えるため使用CultureInfo.InvariantCultureしますが、実際にはAMまたはPMであるAM/PM指定子を確実に取得するために使用する必要があります。別のカルチャを使用する場合、AM/PM指定子が変更される可能性があります。
  • 完全な日付と時刻は、時刻がゼロの今日の日付を返すことに基づいて作成されDateTime.Today、入力から読み取った時刻を追加するだけです。

別の日付から最終的な日付と時刻を作成するには、代わりに次を使用できます。

var timeInAnotherDate = new DateTime(2000, 1, 1).Add(timeFromInput.TimeOfDay);

参考資料:

于 2012-08-10T11:31:32.350 に答える
1
create function dbo.COMBINE_DATE_TIME(
  @DatePart DateTime,                 -- DateTime
  @TimePart varchar(5))               -- Time
  returns DateTime
as begin
  return DATEADD(day, DATEDIFF(day,0,@DatePart), 
    CONVERT(DateTime,ISNULL(@TimePart,''),14))
end
go
于 2012-08-10T11:28:48.927 に答える
0
string strDate = DateTime.ParseExact("8:18","HHmm",CultureInfo.CurrentCulture).ToString("hh:mm tt");
于 2012-08-10T11:28:59.363 に答える
0
            string fromTime = Convert.ToStr(reader["TimeFrom"]);
            string toTime = Convert.ToStr(reader["TimeTo"]);
            item.Time=DateTime.Parse(fromTime,CultureInfo.CurrentCulture).ToString("hh:mm tt");

ここでは、モデルのプロパティ(item.Time here)は文字列である必要があります。

于 2019-07-16T13:34:05.473 に答える