15

TimeSpan データが 14:00:00 などの 24 時間形式で表されています。これを 12 時間形式の 2:00 PM に変換したいのですが、Google で検索して、stackoverflow と msdn で関連するものを見つけましたが、解決しませんでしたこの問題、誰でも私を助けることができますか? 前もって感謝します。

更新 24 時間形式の TimeSpan を文字列に変換することは可能ですが、文字列を 12 時間形式の TimeSpan に変換することはできないようです:(

しかし、私はまだ非常に多くの良い答えを得ました、ありがとう!

4

8 に答える 8

9

TimeSpan時刻ではなく時間間隔を表します。構造は、DateTime探しているものである可能性が高くなります。

于 2012-04-12T12:21:57.393 に答える
8

最初に TimeSpan を DateTime オブジェクトに変換してから、必要なDateTime 形式を使用する必要があります。

var t = DateTime.Now.TimeOfDay;

Console.WriteLine(new DateTime(t.Ticks).ToString("hh:mm:ss tt"));

ToShortTimeString()も機能しますが、地域設定に依存するため、米国以外のシステムでは正しく (または表示方法によっては正しく) 表示されません。

于 2012-04-12T12:25:49.633 に答える
6

TimeSpanは、日付や時刻ではなく時間間隔 (時刻の差) を表すため、24 時間または 12 時間形式で定義する意味はほとんどありません。私はあなたが実際にDateTime.

たとえば、今日の午後 2 時:

TimeSpan ts = TimeSpan.FromHours(14);
DateTime dt = DateTime.Today.Add(ts);

次に、必要に応じてその日付をフォーマットできます。

String formatted = String.Format("{0:d/M/yyyy hh:mm:ss}", dt); // "12.4.1012 02:00:00" - german (de-DE)

http://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.100%29.aspx

于 2012-04-12T12:25:20.523 に答える
4

このコードを試してください:

int timezone = 0;

この文字列は 12 時間形式を示します

string time = DateTime.Now.AddHours(-timezone).ToString("hh:mm:ss tt");

この文字列は 24 時間形式を示します

string time = DateTime.Now.AddHours(-timezone).ToString("HH:mm:ss tt");
于 2012-04-12T12:57:43.730 に答える
1
String formatted = yourDateTimeValue.ToString("hh:mm:ss tt");
于 2012-04-12T12:29:25.653 に答える
1

24 時間の範囲内にとどまっていると仮定すると、TimeSpan今日DateTime(またはその他の日付) から負の値を差し引いて、日付部分を削除することで目的を達成できます。

DateTime dt = DateTime.Today;
dt.Subtract(-TimeSpan.FromHours(14)).ToShortTimeString();

収量:

午後2時

于 2012-04-12T12:22:32.683 に答える