如何在过去30天内随机生成某个时间的日期?

Ala*_*an2 -2 c# random datetime

我有一个名为d的变量,我目前正在给出值:

var a = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

我怎样才能使变量每次设置变量时,变量在现在和最后30天之间获得不同的日期?

Mic*_*ray 13

Random r = new Random();
var a = DateTime.Today.AddDays(-1 * r.Next(30));
Run Code Online (Sandbox Code Playgroud)

请注意,Next(30)将永远不会返回30本身的值,因为Next函数参数是一个独占值.你的陈述"过去30天"有点模棱两可......如果你在过去的30天里没有包括"今天",那么你只需要加1并制作它r.Next(31).

  • @musefan:`-x`基本上与`0-x`相同.但为什么你需要保存乘法?这两条线所做的工作量与乘法相比是*巨大的*; 试图"拯救"这项工作就像试图通过不浇水草坪上的一片草叶来节约用水. (5认同)
  • 我发现许多人使用DateTime.Now他们不关心时间,OP的措辞似乎表明需要约会. (3认同)
  • @musefan:对于整数,芯片实际上会将`x - y`实现为`x +( - y)`,所以没有从一元减号中脱离.无论你说'-y`或'0-y`或`-1*y`或`(-1)*y`还是其他什么都没关系; 相信编译器足够聪明,可以生成良好的代码. (2认同)