jobElement.CreationDate = jobElement.CreationDate + TimeSpan.FromHours(24.0);
我想没有严格的24小时,但有+ - 10秒缓冲。如23.59.10和00.00.10
用c#来达到目的?
答案 0 :(得分:4)
这将以相同的概率生成CreationDate + 23:50和CreationDate + 24:10:
Random random = new Random();
TimeSpan buffer = TimeSpan.FromSeconds(10);
TimeSpan span = TimeSpan.FromHours(24.0);
// 50% of the time do this
if(random.Next() % 2 == 0)
{
span += buffer;
}
// The rest of the time do this
else
{
span -= buffer;
}
jobElement.CreationDate = jobElement.CreationDate + span;
答案 1 :(得分:0)
你需要做什么?
如果需要进行任何比较,请使用覆盖的相等运算符创建自定义类。
答案 2 :(得分:0)
如果你想要+/- 10,所有数字都在
之间Random r = new Random();
int x = r.Next(-10, 11);
var ts = TimeSpan.FromHours(24).Add(TimeSpan.FromSeconds((double)x));
jobElement.CreationDate = jobElement.CreationDate + ts;
答案 3 :(得分:0)
我不是百分百肯定你想要的,但我会试一试
DateTime dt1 = DateTime.Now;
DateTime dt2 = DateTime.Now.AddDays(1).AddSeconds(8);
这两个现在相隔24小时8秒。
然后,如果你想看看他们是否“差不多”24小时appart,你可以做这样的事情:
if( Math.Abs((dt1-dt2.AddDays(-1))) < 10 ){
//dt2 is 24 after dt1 +- 10 seconds
}else{
//they are not
}
答案 4 :(得分:0)
当前日期的第一次(00.00.00) - / + 10秒将是:
DateTime dateFrom = jobElement.CreationDate.Date.AddSeconds(-10);
DateTime dateTo = jobElement.CreationDate.Date.AddSeconds(10);
是吗?
答案 5 :(得分:0)
我将添加此变体。它与其他人不同,因为它不是“基于第二”而是基于“tick”(tick是TimeSpan / DateTime可以计算的最小时间)
const int sec = 10; // +/- seconds of the "buffer"
const int ticksSec = 10000000; // There are 10000000 Ticks in a second
Random r = new Random();
int rng = r.Next(-sec * ticksSec, sec * ticksSec + 1); // r.Next is upper-bound exclusive
var ts = TimeSpan.FromHours(24) + TimeSpan.FromTicks(rng);
jobElement.CreationDate = jobElement.CreationDate + ts;
Random
类中存在限制(它不能生成long,并且生成“约束”long(maxValue = x的long)仅基于Random类是非平凡的,所以这将工作长达3分钟和一些“缓冲”(214秒更准确)。