C# 中实现随机时间的获取
2006-09-07 17:31
483 查看
原理其实非常简单,取出两个时间差的秒数,再在0到该秒数之间随机获取一个整数,将其做为秒添加到较小的时间上,可以说实现上并没什么技术难点,可以在数据类型的边界条件上却需要格外的注意,比如将大于 System.Int32.MaxValue 或小于 System.Int32.MinValue 的值转成 int 时,如果直接在变量前加上类型名转换((int)d),不会有有异常产生,但得到的值却是 System.Int32.MinValue,还有就是对于Math.Abs 方法,当参数 value 等于 MinValue 将会引发 System.OverflowException 异常。
代码如下:
using System;
namespace Yyw
using System;
using NUnit.Framework;
namespace Yyw
[TestFixture]
public class DateTimeHelperFixture
/**//// <summary>
/// 边界测试
/// </summary>
[Test]
public void TestGetRandomTime()
DateTime minTime = DateTime.MinValue;
DateTime maxTime = DateTime.MaxValue;
Random random = new Random();
for (int i = 0; i < 10000; i++)
DateTime randomTime = DateTimeHelper.GetRandomTime(maxTime, minTime, random);
CheckResult(minTime, maxTime, randomTime);
}
for (int i = 0; i < 10000; i++)
DateTime randomTime = DateTimeHelper.GetRandomTime(minTime, maxTime, random);
CheckResult(minTime, maxTime, randomTime);
}
}
private void CheckResult(DateTime minTime, DateTime maxTime, DateTime randomTime)
System.TimeSpan ts1 = new System.TimeSpan(randomTime.Ticks - minTime.Ticks);
System.TimeSpan ts2 = new System.TimeSpan(randomTime.Ticks - maxTime.Ticks);
Assert.IsTrue(ts1.Seconds >= 0 && ts2.Seconds <= 0);
}
}
}
代码如下:
using System;
namespace Yyw
using System;
using NUnit.Framework;
namespace Yyw
[TestFixture]
public class DateTimeHelperFixture
/**//// <summary>
/// 边界测试
/// </summary>
[Test]
public void TestGetRandomTime()
DateTime minTime = DateTime.MinValue;
DateTime maxTime = DateTime.MaxValue;
Random random = new Random();
for (int i = 0; i < 10000; i++)
DateTime randomTime = DateTimeHelper.GetRandomTime(maxTime, minTime, random);
CheckResult(minTime, maxTime, randomTime);
}
for (int i = 0; i < 10000; i++)
DateTime randomTime = DateTimeHelper.GetRandomTime(minTime, maxTime, random);
CheckResult(minTime, maxTime, randomTime);
}
}
private void CheckResult(DateTime minTime, DateTime maxTime, DateTime randomTime)
System.TimeSpan ts1 = new System.TimeSpan(randomTime.Ticks - minTime.Ticks);
System.TimeSpan ts2 = new System.TimeSpan(randomTime.Ticks - maxTime.Ticks);
Assert.IsTrue(ts1.Seconds >= 0 && ts2.Seconds <= 0);
}
}
}
相关文章推荐
- c# 获取随机数字/字符/时间
- C#获取双色球近百期号码实现随机选号
- C#:获取随机昵称实现
- C#实现获取时间
- 基于moment插件实现的获取各种时间的类
- 用C#实现视频录像回放的时间播放条功能
- mktime函数实现获取当前系统时间
- C#获取当前日期时间
- 用C#实现获取文件夹大小的源代码(收藏)
- C#反射获取文件流实现逐行读取
- Atitit. 获取cpu占有率的 java c# .net php node.js的实现
- VC++实现文件夹时间属性的获取与更改(转载)
- 转:c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- C#获取系统当前时间
- c# 获取北京时间更新本地计算机
- C#获取指定目录最后写入时间的方法
- C#中实现窗体间传值开发者在线 Builder.com.cn 更新时间:2008-07-19作者: 来源:
- 用C#实现语音技术开发者在线 Builder.com.cn 更新时间:2008-07-18作者: 来源:
- C#获取当前系统时间