All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
在ASP.NET2.0中的WEB.CONFIG文件中调用外部文件_[Asp.Net教程]
实用技巧:PHP中调用Java类的两种方法_php资料_编程技术
Delphi以树型显示的程序界面
Sql,server数据库备份的三个恢复模型_[SQL,Server教程]
ASP.NET技巧:获取数据行数据信息_.net资料_编程技术
得到全部RedioButton项及被选项的值_[Asp.Net教程]
SQLServer和Access、Excel数据传输_[SQL,Server教程]
理解C#,3.0新特性之Extension方法浅议_.net资料_编程技术
net得到本地电脑基本信息的简单方法_[Asp.Net教程]
第五篇:Visual,Stuido,2008,Web开发使用的新特性_[Asp.Net教程]
Reading number is top 10 pictures
西方气质的东方美女3
NeedWallpaper2
30 beautiful school beauty5
这酸爽,让人不敢相信
西游日记2
Breasts woman big set 1
新版武松打虎
中国的阶级现状
So beauty, will let you spray blood6
Fury xp desktop theme
Download software ranking
SQL2000 For 4IN1
Call Of Duty5
I'm come from Beijing1
Eclipse 4.2.2 For Win64
网络管理员第三版
Tram sex maniac 2 (H) rar bag3
Dance with duck(male prostitution)
Unix video tutorial1
在线棋牌游戏3.05版
Unix video tutorial18
aaa published in(发表于) 2013/12/6 10:25:51 Edit(编辑)
C#中实现随机时间的获取_.net资料_编程技术

C#中实现随机时间的获取_.net资料_编程技术

C#中实现随机时间的获取_.net资料_编程技术-数科优化网

原理其实非常简单,取出两个时间差的秒数,再在0到该秒数之间随机获取一个整数,将其做为秒添加到较小的时间上,可以说实现上并没什么技术难点,可以在数据类型的边界条件上却需要格外的注意,比如将大于 System.Int32.MaxValue 或小于 System.Int32.MinValue 的值转成 int 时,如果直接在变量前加上类型名转换((int)d),不会有有异常产生,但得到的值却是 System.Int32.MinValue,还有就是对于Math.Abs 方法,当参数 value 等于 MinValue 将会引发 System.OverflowException 异常。


代码如下:



using System;


namespace Yyw
{
public class DateTimeHelper
{
/**////


/// 获取随机时间
///
/// 由于Random 以当前系统时间做为种值,所以当快速运行多次该方法所得到的结果可能相同,
/// 这时,你应该在外部初始化 Random 实例并调用 GetRandomTime(DateTime time1, DateTime time2, Random random)
///

///

///
///
///
public static DateTime GetRandomTime(DateTime time1, DateTime time2)
{
Random random = new Random();
return GetRandomTime(time1, time2, random);
}


/**////


/// 获取随机时间
///

///
///
///
///
public static DateTime GetRandomTime(DateTime time1, DateTime time2, Random random)
{
DateTime minTime = new DateTime();
DateTime maxTime = new DateTime();


System.TimeSpan ts = new System.TimeSpan(time1.Ticks - time2.Ticks);


// 获取两个时间相隔的秒数
double dTotalSecontds = ts.TotalSeconds;
int iTotalSecontds = 0;


if (dTotalSecontds > System.Int32.MaxValue)
{
iTotalSecontds = System.Int32.MaxValue;
}
else if (dTotalSecontds < System.Int32.MinValue)
{
iTotalSecontds = System.Int32.MinValue;
}
else
{
iTotalSecontds = (int)dTotalSecontds;
}



if (iTotalSecontds > 0)
{
minTime = time2;
maxTime = time1;
}
else if (iTotalSecontds < 0)
{
minTime = time1;
maxTime = time2;
}
else
{
return time1;
}


int maxValue = iTotalSecontds;


if (iTotalSecontds <= System.Int32.MinValue)
maxValue = System.Int32.MinValue + 1;


int i = random.Next(System.Math.Abs(maxValue));


return minTime.AddSeconds(i);
}
}
}
测试代码:


using System;
using NUnit.Framework;


namespace Yyw
{
[TestFixture]
public class DateTimeHelperFixture
{
/**////


/// 边界测试
///

[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);
}
}
}






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.