C# 时间戳(TimeStamp)与时间(DateTime)的互相转换

摘要:
什么是时间戳?时间戳指的是自1970年1月1日00:00:00 GMT以来的总秒数/////////精确到毫秒//返回一个长整数时间戳Else{//以上值精确到毫秒。需要在末尾删除它。这里,它精确到秒。只需在10000之后添加三个零。

  什么是时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

  时间戳在线转换网址:https://tool.lu/timestamp,时间戳的转换网址有很多,经常用的还有站长工具。

下附代码,在控制台中粘贴在启动类即可使用,需引用(using System)命名空间 ;

/// <summary>
/// 取时间戳,高并发情况下会有重复。想要解决这问题请使用sleep线程睡眠1毫秒。
/// </summary>
/// <param name="AccurateToMilliseconds">精确到毫秒</param>
/// <returns>返回一个长整数时间戳</returns>
public static long GetTimeStamp(bool AccurateToMilliseconds = false)
{
if (AccurateToMilliseconds)
{

// 使用当前时间计时周期数(636662920472315179)减去1970年01月01日计时周期数(621355968000000000)除去(删掉)后面4位计数(后四位计时单位小于毫秒,快到不要不要)再取整(去小数点)。

//备注:DateTime.Now.ToUniversalTime不能缩写成DateTime.Now.Ticks,会有好几个小时的误差。

//621355968000000000计算方法 long ticks = (new DateTime(1970, 1, 1, 8, 0, 0)).ToUniversalTime().Ticks;

return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000; 

}
else
{

//上面是精确到毫秒,需要在最后除去(10000),这里只精确到秒,只要在10000后面加三个0即可(1秒等于1000毫米)。
return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
}
}

/// <summary>
/// 时间戳反转为时间,有很多中翻转方法,但是,请不要使用过字符串(string)进行操作,大家都知道字符串会很慢!
/// </summary>
/// <param name="TimeStamp">时间戳</param>
/// <param name="AccurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回一个日期时间</returns>
public static DateTime GetTime(long TimeStamp, bool AccurateToMilliseconds = false)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
if (AccurateToMilliseconds)
{
return startTime.AddTicks(TimeStamp * 10000);
}
else
{
return startTime.AddTicks(TimeStamp * 10000000);
}
}

免责声明:文章转载自《C# 时间戳(TimeStamp)与时间(DateTime)的互相转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇防止SSH自动断线JFileChooser添加文件过滤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js 获取ISO-8601格式时间字符串的时间戳

functiongetTimeStamp(isostr) { var parts = isostr.match(/d+/g); return new Date(parts[0]+'-'+parts[1]+'-'+parts[2]+' '+parts[3]+':'+parts[4]+':'+parts[5]).getTime(); }...

php集成动态口令认证

这篇文章主要为大家详细介绍了php集成动态口令认证,动态口令采用一次一密、用过密码作废的方式来提高安全性能,感兴趣的小伙伴们可以参考一下 大多数系统目前均使用的静态密码进行身份认证登录,但由于静态密码容易被窃取,其安全性无法满足安全要求。 动态口令采用一次一密、用过密码作废的方式防止了密码被窃取带来的安全问题。动态口令分为HOTP(基于事件计数的动态口令,...

asp.net C# 实现微信服务器配置

微信服务器配置接收页面示例代码 /// <summary> ///微信的Token /// </summary> const string Token = "Token令牌"; protected void...

Windows ping加时间戳

在c盘下面新建文件 ping.vbs在 ping.vbs中输入代码如下: Dim args, flag, unsuccOut args="" otherout="" flag=0 If WScript.Arguments.count = 0 Then WScript.Echo "Usage: cscript tping.vbs [-t] [-a] [-n...

ETL构建数据仓库五步法

原文:http://huangy82.blog.163.com/blog/static/49069827200923034638409/ ETL构建企业级数据仓库五步法 在数据仓库构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线,包括了从数据清洗,整合,到转换,加载等的各个过程,如果说数据仓库是一座大厦,那 么ETL就是大厦的根基,ETL抽取整合数据...

Android中关于日期时间与时区的使用总结

原文引自:http://www.2cto.com/kf/201312/266908.html 在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范。 一、Unix时间戳 Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(...