1.概念:时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。是一个时间字段,每次增加数据时,填入当前的时间值 是为了数据仓库中ETL部分的增量抽取模型而建立的,也就是说:“有了时间戳,我上个星期的数据已经加载好了,我现在需要增量加载这个星期的数据,该怎么办呢?最好的办法就是把那些时间戳字段的时间值大于上个星期周日的时间就加载,其他的数据就不用加载!说得通俗一些,时间戳就是根据当前系统时间生成的一组随机数字。时间戳一般作为对数据唯一性的一种判断依据
2.时间戳的分类
1、自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证是并不具备法律效力。因其在通过时间接收设备接收时间存在被篡改的可能,故此不能作为法律依据。
2、具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时检测,因其守时监测功能而保障时间错证书中的时间的正确性和不被篡改。获取时间戳平台有“大众版权保护平台”,可与我国中科院授时中心时间同步。
3.时间戳的组成部分
时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分:
1、需加时间戳的文件的摘要(digest)
2、DTS收到文件的日期和时间
3、DTS的数字签名
一般来说,时间戳产生的过程为:用户首先将需要加时间的文件用Hash编码加密形成摘要,然后将该摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。
书面签署文件的时间是由签署人知己写上的,而数字时间戳则不然,它是有认证单位DTS来加的,以DTS收到文件的时间为依据
4.使用:
#region 获取时间戳
/// 获取时间戳
/// </summary>
/// <returns></returns>
public static string GetTimeStamp(System.DateTime time)
{
long ts = ConvertDateTimeToInt(time);
return ts.ToString();
}
/// <summary>
/// 将c# DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time">时间</param>
/// <returns>long</returns>
public static long ConvertDateTimeToInt(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
long t = (time.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
return t;
}
#endregion
//使用时间戳
string TIMESTAMP = GetTimeStamp(DateTime.Now);