C#实现时间戳的简单方法

Introduction:

  在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北京时间1970年1月1日8时)起至现在的总秒数(10位)或总毫秒数(13位);

Body:

  而在C#中.Net框架没有提供现成的获取时间戳的方式,这里分享一个自己实现的时间戳转换工具:

 /// <summary>
  /// 时间工具类
  /// </summary>
  public static class DateTimeUtil
  {
    /// <summary>
    /// 时间戳计时开始时间
    /// </summary>
    private static DateTime timeStampStartTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    /// <summary>
    /// DateTime转换为10位时间戳(单位:秒)
    /// </summary>
    /// <param name="dateTime"> DateTime</param>
    /// <returns>10位时间戳(单位:秒)</returns>
    public static long DateTimeToTimeStamp(DateTime dateTime)
    {
      return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalSeconds;
    }
    /// <summary>
    /// DateTime转换为13位时间戳(单位:毫秒)
    /// </summary>
    /// <param name="dateTime"> DateTime</param>
    /// <returns>13位时间戳(单位:毫秒)</returns>
    public static long DateTimeToLongTimeStamp(DateTime dateTime)
    {
      return (long)(dateTime.ToUniversalTime() - timeStampStartTime).TotalMilliseconds;
    }
    /// <summary>
    /// 10位时间戳(单位:秒)转换为DateTime
    /// </summary>
    /// <param name="timeStamp">10位时间戳(单位:秒)</param>
    /// <returns>DateTime</returns>
    public static DateTime TimeStampToDateTime(long timeStamp)
    {
      return timeStampStartTime.AddSeconds(timeStamp).ToLocalTime();
    }
    /// <summary>
    /// 13位时间戳(单位:毫秒)转换为DateTime
    /// </summary>
    /// <param name="longTimeStamp">13位时间戳(单位:毫秒)</param>
    /// <returns>DateTime</returns>
    public static DateTime LongTimeStampToDateTime(long longTimeStamp)
    {
      return timeStampStartTime.AddMilliseconds(longTimeStamp).ToLocalTime();
    }
  }

One more thing:

  在C#中,DateTime和字符串类型类似,都是一个设计良好的不可变类型,但与字符串类型不同的是,DateTime是值类型,不会造成单独的堆内存消耗和垃圾回收开销,因此大大部分情况下都可以放心使用;

Conclusion:

  DateTime在使用时还有很多小技巧,博主后面会在新博文中分享出来和大家一起探讨。有关闰秒的话题可以自行Search,这里不做讨论。

总结

以上所述是小编给大家介绍的C#实现时间戳的简单方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • C# 时间与时间戳互转的方法(13位)

    目前经常出现的时间有三个: 本地时间(locale time) 格林威治时间(Greenwich Mean Time GMT) 时间协调时间 (Universal Time Coordinated UTC) 时间标准: (1)世界时 世界时是最早的时间标准.在1884年,国际上将1s确定为全年内每日平均长度的1/8.64×104.以此标准形成的时间系统,称为世界时(UT1). 1972年国际上开始使用国际原子时标,从那以后,经过格林威治老天文台本初子午线的时间便被称为世界时(UT2),或称格林威

  • js时间戳和c#时间戳互转方法(推荐)

    实例如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Newtonsoft.Json; namespace TestWeb { public partial class ajax : System.Web.UI.Page { protected voi

  • C#中系统时间和UNIX时间戳互相转换

    在项目开发过程中,有时会遇到不同程序之间相互调用数据,数据中不免会包含时间,比如ASP.NET调用PHP,牵扯到时间就要做一下处理,PHP程序中一般存取的都是UNIX时间,不像ASP.NET存储的是年月日时分秒,这样就需要做一下转换,代码如下: 一.将系统时间转换成UNIX时间戳 复制代码 代码如下: DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970,1,1)); DateTime dtNow =

  • js与C#进行时间戳转换

    JS时间戳转成C#里的时间,再把C#里的时间戳转成JS的时间 JS里的时间戳 复制代码 代码如下: var dt = new Date().getTime();//时间戳 C# 时间戳转时间 复制代码 代码如下: DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime( new DateTime(1970, 1, 1));             long lTime = long.Parse(dt + "0000");  //说

  • 深入Unix时间戳与C# DateTime时间类型互换的详解

    Unix时间戳最小单位是秒,开始时间为格林威治标准时间1970-01-01 00:00:00ConvertIntDateTime方法的基本思路是通过获取本地时区表示Unixk开始时间,加上Unix时间值(即过去的秒数). ConvertDateTimeInt方法的基本思路是通过刻度数差,再把刻度数转换为秒数,当然要说明的是,我这里返回的是double类型,意义上并非是真正的Unix时间戳格式.要获取真正Unix时间戳的,只获取整数部分就可以了. 复制代码 代码如下: dangranusing S

  • C#时间戳基本用法实例分析

    本文实例讲述了C#时间戳基本用法.分享给大家供大家参考.具体如下: 一.C#如何生成一个时间戳 /// <summary> /// 获取时间戳 /// </summary> /// <returns></returns> public static string GetTimeStamp() { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Conve

  • C#更新SQLServer中TimeStamp字段(时间戳)的方法

    本文实例讲述了C#更新SQLServer中TimeStamp字段(时间戳)的方法.分享给大家供大家参考.具体实现方法如下: public partial class Form1 : Form { private SqlConnection mCnn = null; private long TimeStampValue; public Form1() { InitializeComponent(); mCnn = new SqlConnection(); mCnn.ConnectionStrin

  • C# DateTime与时间戳转换实例

    C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数. Unix时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 可以看出JavaScrip

  • C#实现时间戳的简单方法

    Introduction: 在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北京时间1970年1月1日8时)起至现在的总秒数(10位)或总毫秒数(13位): Body: 而在C#中.Net框架没有提供现成的获取时间戳的方式,这里分享一个自己实现的时间戳转换工具: /// <summary> /// 时间工具类 /// </summary> public static class Date

  • php求今天、昨天、明天时间戳的简单实现方法

    本文实例讲述了php求今天.昨天.明天时间戳的简单实现方法.分享给大家供大家参考,具体如下: echo strtotime('now'),'<br>';//现在 echo strtotime('today'),'<br>';//今天 echo strtotime('tomorrow'),'<br>';//明天 echo strtotime('yesterday'),'<br>';//昨天 运行结果如下: 1469674869 1469664000 14697

  • JS操作时间 - UNIX时间戳的简单介绍(必看篇)

    准备知识 GMT(Greenwich Mean Time) - 格林尼治时间.UTC(Universal Time Code) - 国际协调时间.PST(Pacific Standard Time,太平洋标准时间). UTC出现的比GMT时间晚,可以认为UTC时间更加精确,不过它们之间只相差几秒钟. UTC开始时间为:1970-01-01T00:00:00.000Z(这种时间设置可以一直精确到毫秒,字母T和Z仅仅是一种格式) UNIX时间戳指的是从1970-01-01T00:00:00.000Z

  • PHP获取文件属性的最简单方法

    1.filesize($filename) 返回指定文件大小. 如果成功,会返回文件大小的字节数:如果失败,则返回 FALSE. <?php header("content-type:text/html;charset=utf-8"); $filename = "test.txt"; echo "{$filename} 文件的大小为:".filesize($filename); ?> 2.filetype($filename) 返回指

  • VC中实现文字竖排的简单方法(推荐)

    好多人都觉得在VC中实现文字竖排是一件很难的事情,其实可以使用"躺"着的字体很方便的实现文字竖排. Windows中有一些字体是"躺"着的,例如:@Fixedsys.@System.@宋体.@黑体等等,有很多,这些字体和不加@的字体的唯一区别就是用这些字体显示的文字是"躺"着的.如下图: 对这些"躺"着的字体进行270°的旋转就可以实现文字竖排了,效果如下: 以下代码可以产出竖排的宋体. CFont font; CFont *

  • ORACLE多条件统计查询的简单方法

    前几天要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析.一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该. 然后就开始百度,多种条件下的统计.然后有一种语法让我眼前一亮,case when then else end 当满足CASE设定的条件时,就可以执行then语句.由于我要做的分组查询统计,是要罗列每一种情况,而且根据输入的"管理员编号"不同返回不同结果,结果记录的条数和每一种情况是可知的,这个语法完全可用 核心代码如下: SEL

  • js 判断各种数据类型的简单方法(推荐)

    了解js的都知道, 有个typeof  用来判断各种数据类型,有两种写法:typeof   xxx   ,typeof(xxx)  如下实例: typeof   2      输出   number typeof   null   输出   object typeof   {}    输出   object typeof    []    输出   object typeof   (function(){})   输出  function typeof    undefined  输出  und

  • 恢复百度云盘本地误删的文件脚本(简单方法)

    今天被同步盘搞得焦头烂额. 辛苦码的代码(除了重要的.备份过的)都被删掉了-- 当时我就石化了... 随后发现同步盘目录有个delete目录,里面还有manifest.xml,和一堆改了名的文件, 看到manifest.xml的内容时,瞬间觉得有救了,立马开搞python 废话不多说,直接上代码: #-*- coding:utf-8 -*- from xml.etree import ElementTree import os import sys reload(sys) sys.setdefa

  • javascript 动态脚本添加的简单方法

    异步加载js文件或者异步加载js模块,支持所有浏览器,包括IE,参考至javascript高级编程 1.createScript方法用于创建一个script标签并添加到body标签中 2.createModule方法用于创建一个script脚本的标签,并且如果在IE8以下的版本运行会抛出异常,在异常捕获模块中执行script.text兼容IE添加js的脚本内容. <button id="demo">js文件</button> <button id=&quo

  • JavaScript trim 实现去除字符串首尾指定字符的简单方法

    实例如下: String.prototype.trim = function (char, type) { if (char) { if (type == 'left') { return this.replace(new RegExp('^\\'+char+'+', 'g'), ''); } else if (type == 'right') { return this.replace(new RegExp('\\'+char+'+$', 'g'), ''); } return this.re

随机推荐