我如何设置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.Now
来获取当前时间,然后从中取出TimeOfDay
并将其添加到现有DateTime
的Date
中:
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;