C#获取当前时间戳

一、介绍

时间戳(Timestamp)是指从某个固定的日期时间点(如:1970年1月1日或1904年1月1日等)到现在的总秒数或毫秒数。在计算机系统中,经常需要对时间进行计算、存储、比较和转换,而时间戳可以方便地实现这些功能。

C#提供了多种获取当前时间戳的方式,这篇文章将综述这些方法及其使用场景。

二、DateTime.Now.Ticks

DateTime.Now.Ticks属性返回自0001年1月1日午夜12:00:00以来的100纳秒间隔数。这个值在整个. NET Framework上是唯一的,并适用于所有日期和时间值。Ticks属性的值介于DateTime.MinValue.TicksDateTime.MaxValue.Ticks之间,即从0001年1月1日到9999年12月31日的范围内的所有日期和时间。

因为Ticks表示了自0001年1月1日以来的时间间隔,所以要把Ticks转换为秒,需要将其除以10,000,000。为了获得毫秒时间戳,需要将Ticks除以10,000。

long seconds = DateTime.Now.Ticks / TimeSpan.TicksPerSecond;
long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

三、DateTime.Now.ToUniversalTime().ToString(“yyyyMMddHHmmssfff”)

现在日期时间的UTC(协调世界时)表示与当前本地时区的偏差在表示这个时间之前是不必考虑的。直接使用DateTime.Now.ToUniversalTime()方法,将返回一个DateTime值,表示当前日期和时间的UTC时间。将这个时间格式化后,即可得到当前时间的UTC表达方式。

在这个表达中,一共包含了14个数字,前面8个数字代表年月日,接下来6个数字代表时分秒,末尾3个数字表示毫秒。该表达方式用于在分布式系统中唯一地标识一个事件的时间戳。

string utcTimeStamp = DateTime.Now.ToUniversalTime().ToString("yyyyMMddHHmmssfff");

四、DateTimeOffset.UtcNow.ToUnixTimeSeconds()

DateTimeOffset结构体表示一个日期和时间,其相对于协调世界时(UTC)的偏移量。在这个结构中,日期和时间的值是DateTime结构中一样的,但是还包括一个Offset属性,代表与UTC的偏移量。

该方法返回从UTC时间1970年1月1日午夜12:00(也称作UNIX纪元)到现在的总秒数。领域中常用于时间戳操作。

long unixTimeStamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

五、Stopwatch类

Stopwatch类表示执行时间测量,并且可用于诊断和性能测试应用程序。这个类提供了一些方法和属性,其中最重要的就是Elapsed属性,它返回一个TimeSpan对象,表示从计时器启动后经过的时间。可以通过调用Elapsed.TotalMilliseconds属性,获得自计时器启动以来经过的毫秒数。

Stopwatch类通常比DateTime.Now方法更加精准,特别是对于需要测量较小代码段执行时间的情况。

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
// 单位时间代码
stopwatch.Stop();
long milliseconds = stopwatch.ElapsedMilliseconds;

六、小结

通过以上介绍,我们了解了C#中几种获取当前时间戳的方法及特点。在不同的应用场景下,可以选择不同的方法来获得时间戳。DateTime.Now.Ticks属性对于只需要计算不同的时间间隔长度很有用,而DateTime.Now.ToUniversalTime()方法用于生成可分布式系统中唯一的时间标识,DateTimeOffset.UtcNow.ToUnixTimeSeconds()方法则通常用于与其他平台进行时间戳的交互,StopWatch类适用于需要精准控制代码执行时间的情况。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/308406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-03 14:48
下一篇 2025-01-03 14:49

相关推荐

  • 解决docker-compose 容器时间和服务器时间不同步问题

    docker-compose是一种工具,能够让您使用YAML文件来定义和运行多个容器。然而,有时候容器的时间与服务器时间不同步,导致一些不必要的错误和麻烦。以下是解决方法的详细介绍…

    编程 2025-04-29
  • 想把你和时间藏起来

    如果你觉得时间过得太快,每天都过得太匆忙,那么你是否曾经想过想把时间藏起来,慢慢享受每一个瞬间?在这篇文章中,我们将会从多个方面,详细地阐述如何想把你和时间藏起来。 一、一些时间管…

    编程 2025-04-28
  • 计算斐波那契数列的时间复杂度解析

    斐波那契数列是一个数列,其中每个数都是前两个数的和,第一个数和第二个数都是1。斐波那契数列的前几项为:1,1,2,3,5,8,13,21,34,…。计算斐波那契数列常用…

    编程 2025-04-28
  • 时间戳秒级可以用int吗

    时间戳是指从某个固定的时间点开始计算的已经过去的时间。在计算机领域,时间戳通常使用秒级或毫秒级来表示。在实际使用中,我们经常会遇到需要将时间戳转换为整数类型的情况。那么,时间戳秒级…

    编程 2025-04-28
  • 如何在ACM竞赛中优化开发时间

    ACM竞赛旨在提高程序员的算法能力和解决问题的实力,然而在比赛中优化开发时间同样至关重要。 一、规划赛前准备 1、提前熟悉比赛规则和题目类型,了解常见算法、数据结构和快速编写代码的…

    编程 2025-04-28
  • 使用JavaScript日期函数掌握时间

    在本文中,我们将深入探讨JavaScript日期函数,并且从多个视角介绍其应用方法和重要性。 一、日期的基本表示与获取 在JavaScript中,使用Date对象来表示日期和时间,…

    编程 2025-04-28
  • Java Date时间大小比较

    本文将从多个角度详细阐述Java中Date时间大小的比较,包含了时间字符串转换、日期相减、使用Calendar比较、使用compareTo方法比较等多个方面。相信这篇文章能够对你解…

    编程 2025-04-27
  • 二分查找时间复杂度为什么是logN – 知乎

    二分查找是一种常用的查找算法。它通过将目标值与数组的中间元素进行比较,从而将查找范围缩小一半,直到找到目标值。这种方法的时间复杂度为O(logN)。下面我们将从多个方面探讨为什么二…

    编程 2025-04-27
  • One change 时间:简化项目开发的最佳实践

    本文将介绍 One change 时间 (OCT) 的定义和实现方法,并探讨它如何简化项目开发。OCT 是一种项目开发和管理的策略,通过将更改限制在固定的时间间隔(通常为一周)内,…

    编程 2025-04-27
  • Java Date 比较时间大小

    本文将从以下方面对 Java Date 比较时间大小进行详细阐述: 一、比较方法的介绍 Java Date 类提供了多种比较时间大小的方法,其中比较常用的包括: compareTo…

    编程 2025-04-27

发表回复

登录后才能评论