舍入日期时间

时间:2019-06-05 20:04:02

标签: c# datetime

对于我的SteamBot,我想存储再次可以交易的日期和时间。

示例:

// DateNow = 05.06.2019 13:37:00
(+ 7 days due to Steam's trade policy)
// DateNow+7Days = 12.06.2019 13:37:00
// DateIneed = 13.06.2019 09:00:00

所以我需要的DateTime是CurrentDateTime + 7天+剩下的9点钟

这就是我要走的路:

var date = DateTime.Now.AddDays(7);

有什么聪明的方法可以始终获取我需要的DateTime吗?

语言是C#

2 个答案:

答案 0 :(得分:6)

我认为您可以很容易地检查今天是否是今天9点之前,然后将时间设置为9,否则添加一天并将时间设置为9。

var time = DateTime.Now;
var date = time.Hour <= 9
   ? time.Date.AddDays(7).AddHours(9) 
   : time.Date.AddDays(7).AddHours(9).AddDays(1);

答案 1 :(得分:0)

DateTime.Date字段公开{em> just DateTime的日期,然后您可以在其中添加任意TimeSpan来设置{{ 1}}反对您想要的任何东西;

DateTime

在此处进行操作:https://dotnetfiddle.net/l3X37y


鉴于一天中的某个小时可能已经过了上午9点,因此可能以DateTime.Now.AddDays(7).Date.Add(new TimeSpan(9, 0, 0)) 结尾的时间少于7天,为此,您可以检查一天中的某个小时是否超过了您要去的时间将DateTime设置为DateTime并添加一天,就像这样;

DateTime dt = DateTime.Now.AddDays(7);
dt = dt.Date.Add(new TimeSpan(dt.Hour >= 9 ? 1 : 0, 9, 0, 0))

在此处查看此操作:https://dotnetfiddle.net/lfVGis