一般的 时间戳 格式分为两种 即 10位(秒)时间戳 与 13位(毫秒)时间戳

时间戳 类型也分为两种 即 本地时间戳 与 世界统一(UTC)时间戳

废话不多说,直接上代码:

一、时间戳获取方法

/// <summary>
/// 获取时间戳
/// </summary>
/// <param name="timeKind">时间类型(只能为 Local、Utc)</param>
/// <param name="format">时间戳格式(只能为 10、13)</param>
/// <returns></returns>
private double GetTimestamp(int format, DateTimeKind timeKind)
{
TimeSpan timeSpan = new TimeSpan(); switch (timeKind)
{
case DateTimeKind.Utc: timeSpan = DateTime.UtcNow - new DateTime(, , , , , , timeKind); break;
case DateTimeKind.Local: timeSpan = DateTime.Now - new DateTime(, , , , , , timeKind); break;
default: throw new Exception("时间类型 只能为 Local、Utc");
} switch (format)
{
case : return timeSpan.TotalSeconds;
case : return timeSpan.TotalMilliseconds;
default: throw new Exception("时间戳格式 只能为 10、13");
}
} /// <summary>
/// 获取10位时间戳
/// </summary>
/// <param name="timeKind">时间类型(只能为 Local、Utc,默认 Local)</param>
/// <returns></returns>
public int Get10Timestamp(DateTimeKind timeKind = DateTimeKind.Local)
{
return Convert.ToInt32(GetTimestamp(, timeKind));
} /// <summary>
/// 获取13位时间戳
/// </summary>
/// <param name="timeKind">时间类型(只能为 Local、Utc,默认 Local)</param>
/// <returns></returns>
public long Get13Timestamp(DateTimeKind timeKind = DateTimeKind.Local)
{
return Convert.ToInt64(GetTimestamp(, timeKind));
}

二、时间戳验证方法

/// <summary>
/// 验证时间戳(10位、13位皆可)
/// </summary>
/// <param name="timestamp">时间戳</param>
/// <param name="timeDiff">允许时差(10位时单位为 秒,13位时单位为 毫秒)</param>
/// <param name="timeKind">时间类型(只能为 Local、Utc,默认 Local)</param>
/// <returns></returns>
public bool ValidateTimestamp(double timestamp, int timeDiff, DateTimeKind timeKind = DateTimeKind.Local)
{
TimeSpan timeSpan = new TimeSpan(); switch (timeKind)
{
case DateTimeKind.Utc: timeSpan = DateTime.UtcNow - new DateTime(, , , , , , timeKind); break;
case DateTimeKind.Local: timeSpan = DateTime.Now - new DateTime(, , , , , , timeKind); break;
default: throw new Exception("时间类型 只能为 Local、Utc");
} double nowTimestamp = ; //现在的时间戳
int format = timestamp.ToString("f0").Length; switch (format)
{
case : nowTimestamp = timeSpan.TotalSeconds; break;
case : nowTimestamp = timeSpan.TotalMilliseconds; break;
default: throw new Exception("时间戳格式 错误");
} double nowTimeDiff = nowTimestamp - timestamp; //现在的时差 if (-timeDiff <= nowTimeDiff && nowTimeDiff <= timeDiff)
return true;
else
return false;
}

三、由 时间戳 转换为 DateTime 方法

/// <summary>
/// 将时间戳装换为DateTime(10位、13位皆可)
/// </summary>
/// <param name="timestamp">时间戳</param>
/// <param name="timeKind">时间类型(只能为 Local、Utc,默认 Local)</param>
/// <param name="toTimeKind">返回的时间类型(只能为 Local、Utc,默认与 timeKind 一致)</param>
/// <returns></returns>
public DateTime TimestampToDateTime(double timestamp, DateTimeKind timeKind = DateTimeKind.Local, DateTimeKind toTimeKind = DateTimeKind.Unspecified)
{
DateTime startTime;
toTimeKind = timeKind; switch (timeKind)
{
case DateTimeKind.Utc: startTime = new DateTime(, , , , , , timeKind); break;
case DateTimeKind.Local: startTime = new DateTime(, , , , , , timeKind); break;
default: throw new Exception("时间类型 只能为 Local、Utc");
} DateTime newTime;
int format = timestamp.ToString("f0").Length; switch (format)
{
case : newTime = startTime.AddSeconds(timestamp); break;
case : newTime = startTime.AddMilliseconds(timestamp); break;
default: throw new Exception("时间戳格式 错误");
} if (newTime.Kind != toTimeKind)
newTime = toTimeKind == DateTimeKind.Local ? newTime.ToLocalTime() : newTime.ToUniversalTime(); return newTime;
}

C# 时间戳的相关操作的更多相关文章

  1. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  2. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  3. DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 实现日期和字符串之间的转换以及日期的相关操作: 1.日期格式的字符串输出为Date类型: 2.将Date类型以指定格式输出: 3.将 ...

  4. Python date,datetime,time等相关操作总结

    date,datetime,time等相关操作总结   by:授客 QQ:1033553122 测试环境: Python版本:Python 3.3.2 代码实践: __author__ = '授客' ...

  5. MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型

    一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...

  6. MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型

    库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...

  7. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  8. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  9. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

随机推荐

  1. 记录一下vue transition 过渡各状态()

    .slide-fade-enter{   opacity: 0;   transform: translateX(100px);   /*从哪里开始过渡:在过渡之前我就把位置定义在100px的位置,并 ...

  2. netty无缝切换rabbitmq、activemq、rocketmq实现聊天室单聊、群聊功能

    netty的pipeline处理链上的handler:需要IdleStateHandler心跳检测channel是否有效,以及处理登录认证的UserAuthHandler和消息处理MessageHan ...

  3. ECMAScript---布尔类型、null、undefined详解

    布尔类型中 至只有 true和false 在开发中它是非常重要的两个值,尤其是在条件判断中 如何把其他类型转换为布尔类型? 1.Boolean() Boolean(1); //true Boolean ...

  4. Bluetooth(蓝牙)连接过程分析

    一 基本概念 蓝牙的连接过程是十分重要的,特别是做蓝牙的技术人员来说,这个是十分重要的.理它的流程,是一件必修课.虽然进入蓝牙行业很久了,以前没怎么系统化的做一些事情,趁此机会,就梳理一下这里面的内容 ...

  5. SCRUM起源

    http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-3 Scrum的原始含义 Scrum原始含义是指英式橄榄球 ...

  6. Codeforces#398 &767C. Garland 树形求子节点的和

    传送门 题意:在一个树上,问能否切两刀,使得三块的节点值的和相同. 思路: 由于这个总的节点和是不变的,每块的节点值和sum固定,dfs搜索,和等于sum/3,切.若不能分成三块(不能被3整除,-1) ...

  7. CodeForces 715B Complete The Graph 特殊的dijkstra

    Complete The Graph 题解: 比较特殊的dij的题目. dis[x][y] 代表的是用了x条特殊边, y点的距离是多少. 然后我们通过dij更新dis数组. 然后在跑的时候,把特殊边都 ...

  8. 快速构建第一个Flink工程

    本文简述通过maven和gradle快速构建的Flink工程.建议安装好Flink以后构建自己的Flink项目,安装与示例运行请查看:Flink快速入门--安装与示例运行. 在安装好Flink以后,只 ...

  9. Java SSM三端分离开发在线教育平台实战视频教程

    目录: 1-01——在线网校实战课程介绍1-02——Eclipse.Maven.JDK介绍1-03——Maven构建Project1-04——新浪SAE介绍2-01——平台业务结构概览2-02——平台 ...

  10. 如何完美激活pycharm2019.2.2

    本号持续关注pycharm的更新,这不本月11号迎来新版本,为防走丢,请关注公众号,让我们携手并行!有道是"予人玫瑰手留余香",分享的确是件令人愉快的事,这也是我创建公众号的初心. ...