private void StartAuction()
{
DateTime closeDate;
closeDate = DateTime.Parse(Console.ReadLine());
}
我可以设置日期、月份和年份,但我希望小时、分钟和秒自动设置为一天中的当前时间。例如,如果当前时间是15:24
,我希望用户添加可能是的日期,21/03/2013
然后我希望时间是 15:24:00,而不是00:00:00
像现在这样。
有什么建议么?
那么您可以使用DateTime.Now
获取当前时间,然后从中获取TimeOfDay
并将其添加到Date
您现有的DateTime
:
private void StartAuction()
{
DateTime closeDate = DateTime.Parse(Console.ReadLine());
DateTime closeDateAtCurrentTime = closeDate.Date + DateTime.Now.TimeOfDay;
...
}
(我明确地使用了该Date
属性,因此即使用户也输入了时间,它也基本上被删除了。)
作为一个公然的插件,您可能还想考虑使用我的Noda Time库,它将“日期”、“时间”和“日期/时间”的概念分成不同的类型。(以及“本地”值与您知道 UTC 偏移量或时区的值。)
你可以做
closeDate = DateTime.Parse(Console.ReadLine() + " " + DateTime.Now.TimeOfDay);
哪个有效,但看起来有点迂回,考虑到您正在从时间格式转换为字符串然后再次转换回时间格式,我不推荐它。那里创建了许多不可变对象。
还有其他选项,包括像您一样解析日期,然后添加TimeOfDay
到它。
DateTime closeDate;
closeDate = DateTime.Parse(Console.ReadLine());
closeDate = closeDate.Date + Date.Now.TimeOfDay;
首先,您需要使用DateTime.Parse
从命令行读取的内容进行解析。
然后,您可以使用DateTime.Now.TimeOfDay
like 来做到这一点;
DateTime closeDate = DateTime.Parse(Console.ReadLine());
closeDate = closeDate.Date + DateTime.Now.TimeOfDay;
你可以这样做:
closeDate = DateTime.Parse(Console.ReadLine())
.Add(DateTime.Now - DateTime.Today);
var now = DateTime.Now;
var date = new DateTime(input.Year, input.Month, input.Day, now.Hour, now.Minute, now.Second);
那么这个小功能怎么样:
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.Now 存储在变量中
var date = DateTime.Now;
然后你可以像这样访问小时、分钟和秒:
date.Hour;
date.Minute;
date.Second;