我如何设置DateTime小时,分钟和秒

本文关键字:小时 分钟 DateTime 何设置 设置 | 更新日期: 2023-09-27 18:04:37

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

我能够设置日期,月份和年份,但我希望小时,分钟和秒自动设置为当天的当前时间。例如,如果当前时间是15:24,我希望用户添加可以是21/03/2013的日期,然后我希望时间是15:24:00,而不是当前的00:00:00

有什么建议吗?

我如何设置DateTime小时,分钟和秒

您可以使用DateTime.Now来获取当前时间,然后从中取出TimeOfDay并将其添加到现有DateTimeDate中:

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

(我显式地使用Date属性,以便即使用户也输入时间,它基本上也会被剥离。)

作为一个明显的插件,您可能还想考虑使用我的Noda Time库,它将"日期"、"时间"answers"日期/时间"的概念分离为不同的类型。(以及"本地"值与您知道UTC偏移量或时区的值)

var now = DateTime.Now;
var date = new DateTime(input.Year, input.Month, input.Day, now.Hour, now.Minute, now.Second);

首先需要用DateTime.Parse解析从命令行读取的内容。

然后,您可以使用DateTime.Now.TimeOfDay,如;

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

可以

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

可以工作,但看起来有点迂回,我不建议它考虑到你将时间格式转换为字符串,然后再返回到时间格式。这里创建了很多不可变对象

还有其他选项,包括解析日期,然后TimeOfDay添加到其中。

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

你可以这样做:

closeDate = DateTime.Parse(Console.ReadLine())
    .Add(DateTime.Now - DateTime.Today);

那么这个小函数呢:

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);
}

这是一个可能的解决方案:

存储DateTime。现在在变量

var date = DateTime.Now;

然后你可以像这样访问小时,分钟和秒:

date.Hour;
date.Minute;
date.Second;