private void StartAuction()
{
DateTime closeDate;
closeDate = DateTime.Parse(Console.ReadLine());
}
我可以设置日期,月份和年份,但我希望小时,分钟和秒自动设置为当天的当前时间。例如,如果当前时间是15:24
,我希望用户添加可能为21/03/2013
的日期,然后我希望时间为15:24:00而不是00:00:00
目前它。
有什么建议吗?
答案 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;