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

时间:2013-03-19 15:39:19

标签: c# string parsing datetime seconds

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

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

有什么建议吗?

7 个答案:

答案 0 :(得分:11)

您可以使用DateTime.Now获取当前时间,然后从中获取TimeOfDay并将其添加到现有DateTime的{​​{3}}中:

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

(我明确使用Date属性,这样即使用户 也输入了一个时间,它基本上也被删除了。)

作为一个公然的插件,您可能还想考虑使用我的Date库,它将“日期”,“时间”和“日期/时间”的想法分成不同的类型。 (以及“本地”值与您知道UTC偏移量或时区的值。)

答案 1 :(得分:1)

可以

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

哪个有效,但确实看起来有点回旋,考虑到你将时间格式转换为字符串然后又回到时间格式,我不推荐它。那里有很多不可变的对象。

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

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

答案 2 :(得分:1)

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

然后,你可以使用DateTime.Now.TimeOfDay之类的;

来做到这一点
DateTime closeDate = DateTime.Parse(Console.ReadLine());
closeDate = closeDate.Date + DateTime.Now.TimeOfDay;

答案 3 :(得分:0)

你可以这样做:

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

答案 4 :(得分:0)

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

答案 5 :(得分: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);
}

答案 6 :(得分:0)

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

将DateTime.Now存储在变量

var date = DateTime.Now;

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

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