2
private void StartAuction()
{
    DateTime closeDate;
    closeDate = DateTime.Parse(Console.ReadLine());
}

日付、月、年を設定できますが、時、分、秒を現在の時刻に自動的に設定したいです。たとえば、現在の時刻が の場合15:24、ユーザーに日付を追加してもらい、現在の時刻では21/03/2013なく、時刻を 15:24:00 に00:00:00します。

助言がありますか?

4

7 に答える 7

11

さて、あなたはDateTime.Now現在の時間を取得するために使用することができます、そしてそれからそれを取りそしてあなたの既存のTimeOfDayものにそれを追加します:DateDateTime

private void StartAuction()
{
    DateTime closeDate = DateTime.Parse(Console.ReadLine());
    DateTime closeDateAtCurrentTime = closeDate.Date + DateTime.Now.TimeOfDay;
    ...
}

(私はこのDateプロパティを明示的に使用しているので、ユーザー時間も入力しても、基本的には削除されます。)

露骨なプラグとして、「日付」、「時刻」、「日付/時刻」の概念をさまざまなタイプに分離する私の野田時間ライブラリの使用を検討することもできます。(「ローカル」値と、UTCオフセットまたはタイムゾーンがわかっている値との比較)。

于 2013-03-19T15:42:32.193 に答える
1

あなたができる

closeDate = DateTime.Parse(Console.ReadLine() + " " + DateTime.Now.TimeOfDay);

これは機能しますが、少し回りくどいように見えます。時間形式から文字列に変換してから再び時間形式に戻すことを考えると、お勧めしません。たくさんの不変オブジェクトが作成されています。

日付を解析してから追加するなど、他のオプションがありますTimeOfDay

DateTime closeDate;
closeDate = DateTime.Parse(Console.ReadLine());
closeDate = closeDate.Date + Date.Now.TimeOfDay;
于 2013-03-19T15:41:19.487 に答える
1

DateTime.Parseまず、コマンドラインから読み取ったものを解析する必要があります。

DateTime.Now.TimeOfDay次に、 like;を使用してそれを行うことができます。

DateTime closeDate = DateTime.Parse(Console.ReadLine());
closeDate = closeDate.Date + DateTime.Now.TimeOfDay;
于 2013-03-19T15:43:32.513 に答える
0
var now = DateTime.Now;
var date = new DateTime(input.Year, input.Month, input.Day, now.Hour, now.Minute, now.Second);
于 2013-03-19T15:43:29.523 に答える
0

あなたはこれを行うことができます:

closeDate = DateTime.Parse(Console.ReadLine())
    .Add(DateTime.Now - DateTime.Today);
于 2013-03-19T15:41:31.767 に答える
0

さて、この小さな関数はどうですか:

public static DateTime ChangeTime(DateTime dateTime)
{
    return new DateTime(
        dateTime.Year,
        dateTime.Month,
        dateTime.Day,
        DateTime.Now.Hour,
        DateTime.Now.Minute,
        DateTime.Now.Second,
        DateTime.Now.Millisecond,
        DateTime.Now.Kind);
}
于 2013-03-19T15:44:22.363 に答える
0

これは可能な解決策です:

DateTime.Now を変数に格納する

var date = DateTime.Now;

次に、次のように時間、分、秒にアクセスできます。

date.Hour;
date.Minute;
date.Second;
于 2013-03-19T15:45:39.313 に答える