在Wacher的项目中,用到了很多时间记录的地方,为了将来能够和在线数据打通,我们使用了时间戳来记录时间信息

由于c# 没有现成的方法,所以我们重新写了一个Helper类来帮助我们使用这些公共函数

同时由于是静态函数,添加引用后我们便可以全局调用了。

1、通过日期获取当前的时间戳

这个时间戳是10位的时间戳,如果需要和JAVA兼容请在除法中取出3位,保存到毫秒级

        /// <summary>
/// 获取时间戳
/// </summary>
/// <returns></returns>
public static string GetTimeSecond(DateTime dataTime)
{
return ((dataTime.ToUniversalTime().Ticks - ) / ).ToString();
}

2、通过时间戳获取到DateTime信息

(无论是string还是long类型,方法中价格强制类型转换即可,目前如果传参是long类型的话只需要ToString即可 )

        /// <summary>
/// 由时间戳到系统时间
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime ReturnDateTime(string date)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(, , ));
long lTime = long.Parse(date + "");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}

3、通过DateTime 获取数字类型的日期时间

(通过DateTime即可获得 20180808 类型的数字日期)

        /// <summary>
/// 通过datetime格式获取 YMD格式数字类型日期
///
/// </summary>
/// <param name="dataTime"></param>
/// <returns></returns>
public static long GetDateInt(DateTime dataTime)
{
var dateLong= dataTime.ToString("yyyyMMdd");
return Convert.ToInt64(dateLong);
}

4、获取绝对随机字符或绝对随机

单机每秒请求10W次不重复,【在网络请求中,我们经常会用到request_id,服务端,客户端均可使用,实测一秒内10W次请求不重复】

原理:

使用基于计算机本身的识别因子随机数的随机因子+基于GUid的随机因子的随机数+短时间戳+base64进制转化为短字符。

参考资料:https://www.cnblogs.com/linJie1930906722/p/6115917.html

https://blog.csdn.net/zmq5411/article/details/47322257

/// <summary>
/// 获取绝对随机数
/// </summary>
/// <returns></returns>
public static string GetRandOnlyId()
{
var timeStamp= (DateTime.Now.ToUniversalTime().Ticks - ) / ;// 减少时间戳位数形成新的短时间戳
var beginRand= IntToi64(new Random(GetRandomSeed()).Next(, ));// 基于计算机硬件的随机因子产生随机数
var endRand= IntToi64(new Random(GetGuidSeed()).Next(, ));// 基于Guid随机因子产生的的随机数
var randString = beginRand+ IntToi64(timeStamp)+ endRand;
return randString;
} /// <summary>
/// 获取不重复的随机数种子
/// system.Security.Cryptography.RNGCryptoServiceProvider的类,它采用系统当前的硬件信息、进程信息、线程信息、系统启动时间和当前精确时间作为填充因子,通过更好的算法生成高质量的随机数
/// </summary>
/// <returns></returns>
static int GetRandomSeed()
{
byte[] bytes = new byte[];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, ); } /// <summary>
/// 通过Guid 获取随机种子
/// </summary>
/// <returns></returns>
static int GetGuidSeed()
{
byte[] buffer = Guid.NewGuid().ToByteArray();
int iSeed = BitConverter.ToInt32(buffer, );
return iSeed;
} /// <summary>
/// 十进制转64进制
/// </summary>
/// <param name="xx"></param>
/// <returns></returns>
public static string IntToi64(long xx)
{
string retStr = "";
while (xx >= )
{
int index = Convert.ToInt16(xx - (xx / ) * );
retStr = Base64Code[index] + retStr;
xx = xx / ;
}
return retStr;
} /// <summary>
/// 64 位转化参数
/// </summary>
private static Dictionary<int, string> Base64Code = new Dictionary<int, string>() {
{ ,"A"}, { ,"B"}, { ,"C"}, { ,"D"}, { ,"E"}, { ,"F"}, { ,"G"}, { ,"H"}, { ,"I"}, { ,"J"},
{ ,"K"}, { ,"L"}, { ,"M"}, { ,"N"}, { ,"O"}, { ,"P"}, { ,"Q"}, { ,"R"}, { ,"S"}, { ,"T"},
{ ,"U"}, { ,"V"}, { ,"W"}, { ,"X"}, { ,"Y"}, { ,"Z"}, { ,"a"}, { ,"b"}, { ,"c"}, { ,"d"},
{ ,"e"}, { ,"f"}, { ,"g"}, { ,"h"}, { ,"i"}, { ,"j"}, { ,"k"}, { ,"l"}, { ,"m"}, { ,"n"},
{ ,"o"}, { ,"p"}, { ,"q"}, { ,"r"}, { ,"s"}, { ,"t"}, { ,"u"}, { ,"v"}, { ,"w"}, { ,"x"},
{ ,"y"}, { ,"z"}, { ,""}, { ,""}, { ,""}, { ,""}, { ,""}, { ,""}, { ,""}, { ,""},
{ ,""}, { ,""}, { ,"+"}, { ,"/"}, };

最后持续更新的 watcher beta 版下载:http://api.bobdong.cn/public/static/Win/Watcher%E5%AE%88%E6%9C%9B%E8%80%85.exe

Github地址:https://github.com/d100000/Watcher

欢迎大家提出建议

【watcher】 #02 c# 中实现时间戳等,日期数字及大概率绝对随机数 实现的更多相关文章

  1. JS中Unix时间戳转换日期格式

    <!doctype html> <html> <head> <title>Unix时间戳转换成日期格式</title> <script ...

  2. MYSQL中UNIX时间戳与日期的转换

    select FROM_UNIXTIME(1464973385.641,'%Y-%m-%d %H:%i:%s'); select UNIX_TIMESTAMP('2016-06-04 01:03:05 ...

  3. UNIX时间戳与日期的相互转换

    mysql中UNIX时间戳与日期的相互转换 UNIX时间戳转换为日期用函数:FROM_UNIXTIME() select FROM_UNIXTIME(1410318106); 日期转换为UNIX时间戳 ...

  4. js中时间戳与日期转换-js日期操作

    常用的一些日期操作. 用js获取一个时间戳. <script type="text/javascript"> var date = new Date();//当前时间 ...

  5. jQuery中时间戳和日期的相互转换

    在项目中经常会使用时间戳和日期的相互转换,可以参考如下代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  6. php中时间戳和日期格式的转换

    一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下: echo strtotime(”2009-1-22″) 结果:1232553600 说明:返 ...

  7. 微信小程序中时间戳和日期的相互转换

    在微信开发小程序时,后台传入的诗句可能是 时间戳 而不是日期  或者需要把日期转换成时间戳来做出相应的处理时我们将用到时间戳和日期的相互转换微信小程序里, 时间戳转化为日期格式,支持自定义.拷贝至项目 ...

  8. 【问题记录】MySQL中时间戳转日期格式和Java中时间戳转日期格式偶尔不一致

    背景: MySQL的某个字段存放着一些时间戳格式的时间. 问题描述: Java程序将MySQL中的时间戳字段取出来,在Java程序中转成yyyy-MM-dd HH:mm:ss格式的时候,偶尔会出现转化 ...

  9. Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。

    通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneI ...

随机推荐

  1. Android 8.0新特性-取消大部分静态注册广播

    今天楼主在写一个广播的demo,功能非常的简单,就是一个应用发送一个自定义的广播,同时在这个应用里面定义了一个广播接受者,并且在AndroidManifest文件中进行静态的注册.Demo看上去非常的 ...

  2. python中的socket服务器(多线程)

    最近在写一个客户端和服务器的项目,使用了SocketServer模块,网上大多数都是TCP连接的例子,我在这总结一个UDP. 直接贴上代码 import threadingimport SocketS ...

  3. windows print 自定义字体颜色【python】

    windows print 自定义字体颜色 import ctypes STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE= -11 STD_ERROR_HANDLE = ...

  4. HTML 的超链接 a 标签中如何设置其宽度和高度?

    HTML 的超链接 a 标签中如何设置其宽度和高度? 在DIV CSS布局中,html 中 a 超链接标签,直接对其设置宽度和高度不能生效,设置宽度和高度也不起作用,这里为大家分享如何实现 a 标签宽 ...

  5. iOS-使用添加的花样字体

    代码地址如下:http://www.demodashi.com/demo/11501.html 项目需求中, 有时候有些金额利率等这些不用系统默认字体展现, 而需要着重突出展示! 一.项目截图及效果截 ...

  6. Solr4.0使用

    http://blog.sina.com.cn/s/blog_64dab14801013k7g.html Solr简介 Solr是一个非常流行的,高性能的开源企业级搜索引擎平台,属于Apache Lu ...

  7. linux下各种形式的shell加法操作总结

    linux 下shell加法操作总结: #!/bin/bash   n=1;echo -n "$n "   let "n = $n + 1" echo -n & ...

  8. 对oracle数字类型的研究

    Oracle的数字类型主要有number,binary_float,binary_double三类,其他的像int,number(p,s)等等大多数都是由这些引申出来的.这部分的理解主要来自oracl ...

  9. Android---Handler消息处理机制

    搞Android的人都知道.android是不同意你在子线程中更新UI操作的.这主要出于线程安全方面的考虑.通常的做法是在主线程中创建一个Handler对象,在子线程中创建一个Message对象.该M ...

  10. Python向PHP发起GET与POST请求

    CloudB项目中到PHP开发WEB管理端,用Python开发服务控制端,在项目中Python的服务控制端有时候须要主动连接PHP的WEB管理端下载或上传配置參数或数据信息,这里採用的原理是Pytho ...