私は06,07,08、.....、16,17,18、...のような整数値を持っています.
この整数値を24時間形式に変換したいと思います。
私はこのようなことをしています
//fromTime holds one of the integer value.
DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(),
"HH",
CultureInfo.InvariantCulture);
string fromtimestring = fromTimeDate.ToString("hh:mm tt");
しかし、それはエラーを与えています
「文字列は有効な日時として認識されませんでした。」
解析中。
ここで私が間違っていること。 ?
このコードを試してください:
int val = 16;
TimeSpan result = TimeSpan.FromHours(val);
string fromTimeString = result.ToString("hh':'mm");
実際には、DateTimeは1日の時間のみに関心があるため、ニーズを表すのに適切なタイプではないと思います。日付も日を表しており、(私の知る限り)切り捨てることはできません。
最も簡単な方法は次のようなものです。
DateTime time = Date.Today + new TimeSpan (0, 0, seconds);
失敗する可能性があるのは、2つの理由が考えられます。
fromTime
は0
から9
までの1桁の整数を保持しています。その9
は09
ではないため、HH
。23
より大きいか、0
より小さい場合です。両方で機能する1桁のH
にフォーマットを変更できます。
DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), "H", CultureInfo.InvariantCulture); //fromTime holds one of the integer value.
上記は、0
から23
までの数値を解析します。
ちなみにTimeSpan
よりDateTime
のように見えますが、 TimeSpan.FromHours メソッドを使用してTimeSpan
に変換できます。
int fromTime = 23;
TimeSpan ts = TimeSpan.FromHours(fromTime);
「HH」フォーマットには2桁が必要です。整数は単なる「9」なので、_09
_です。
そこでfromTime.ToString("00")
を使用して、先頭に0を強制します。
そのDateTimeのdate部分は「今日」になることに注意してください。
実際にhave時間を表すintの場合、解析を行う必要はまったくありません。
int hour = 23;
var today = DateTime.Today;
var time = new DateTime(today.Year, today.Month, today.Day, hour, 0, 0);
または(上記の@ gean08の回答を少し変更したバージョン):
var time = DateTime.Today + TimeSpan.FromHours(hour);
あなたが書いたコードは正しいです一度チェックしてください...........
"fromTime"の値は、 "06"または "0"の代わりに "6"または "24を超えるその他の数値"のように1桁になる場合があります
「文字列は有効な日時として認識されませんでした。」下の行で "HH"の代わりに "hh"を使用すると、このエラーが発生します..............
DateTime fromTimeDate = DateTime.ParseExact(fromTime.ToString(), "HH",
CultureInfo.InvariantCulture);
public string timeformat(int time) {
string hr, min;
min = Convert.ToString(time % 100);
hr = Convert.ToString(time / 100);
if (hr.Length == 1) hr = "0" + hr;
if (min.Length == 1) min = "0" + min;
return hr + ":" + min;
}