C#中当前时间转为时间戳的3个方法

 更新时间:2024年12月16日 09:35:04   作者:代码掌控者  
在计算机应用世界里,无论是为了记录事件的发生时间、保障数据一致性还是提升安全性,时间戳都是不可或缺的重要工具,下面我们就来看看C#中转换当前时间为时间戳有哪些方法吧

前言

今天我们来聊聊时间戳。

在计算机应用世界里,无论是为了记录事件的发生时间、保障数据一致性还是提升安全性,时间戳都是不可或缺的重要工具,特别是在防止重放攻击和管理用户会话方面。

比如在一个银行应用中,登录请求和转账操作都会携带时间戳。

服务器端通过验证这些时间戳来确保请求是新鲜的,并且不是来自之前的通信。

如果用户在一定时间内没有进行任何操作,系统将自动注销该用户的会话。

在 C# 中,将当前时间转换为时间戳是一项简单轻松的事情,

以下是如何实现这一转换的 3 种方法,一起来看看吧!

1. 使用 DateTime 直接转换

可以利用TotalSeconds 和TotalMilliseconds 方法直接转换,但需要自己计算当前时间和 Unix 纪元的差值。

代码如下,留意代码中的注释

using System;

classProgram
{
    static void Main()
    {
        // 使用 DateTime.UtcNow 获取当前 UTC 时间
        DateTime currentTime = DateTime.UtcNow;

        // 通过与 1970-01-01 00:00:00 的差值来计算时间戳
        // 时间戳通常是一个从 Unix 纪元(即 1970-01-01 00:00:00) 开始计算
        // 如果有必要,你也可以自定义起始时间,如 2001-01-01
        // 计算时间戳(秒)
        long timestampInSeconds = (long)(currentTime - new DateTime(1970, 1, 1)).TotalSeconds;

        // 计算时间戳(毫秒)
        long timestampInMilliseconds = (long)(currentTime - new DateTime(1970, 1, 1)).TotalMilliseconds;

        Console.WriteLine("当前时间的时间戳(秒): " + timestampInSeconds);
        Console.WriteLine("当前时间的时间戳(毫秒): " + timestampInMilliseconds);
    }
}

2. 使用 DateTime.UtcNow.Ticks

如果你需要更高的精度,可以使用DateTime.UtcNow.Ticks 来获取当前 UTC 时间的 Ticks(100 纳秒单位)。

不过这个值并不是标准的 Unix 时间戳,需要通过简单的数学运算转换为秒或毫秒级别的时间戳。

using System;

classProgram
{
    static void Main()
    {
        // 获取当前 UTC 时间的 Ticks
        long ticks = DateTime.UtcNow.Ticks;
        
        // 转换为自 Unix 纪元以来的毫秒数
        long unixEpochTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
        long millisecondsSinceEpoch = (ticks - unixEpochTicks) / TimeSpan.TicksPerMillisecond;
        
        Console.WriteLine($"当前时间的时间戳(毫秒): {millisecondsSinceEpoch}");
    }
}

3. 使用 DateTimeOffset

还可以使用DateTimeOffset 类来获取时间戳,这在处理时区时会更方便。

using System;

classProgram
{
    static void Main()
    {
        // 获取当前时间
        DateTimeOffset currentTime = DateTimeOffset.UtcNow;

        // 计算时间戳(秒)
        long timestampInSeconds = currentTime.ToUnixTimeSeconds();

        // 计算时间戳(毫秒)
        long timestampInMilliseconds = currentTime.ToUnixTimeMilliseconds();

        Console.WriteLine("当前时间的时间戳(秒): " + timestampInSeconds);
        Console.WriteLine("当前时间的时间戳(毫秒): " + timestampInMilliseconds);
    }
}

总结

在 C# 中,将当前时间转换为时间戳是一个简单而重要的操作。

通过以上 3 种方法,你可以轻松获取 Unix 时间戳,无论是以秒还是毫秒为单位。

到此这篇关于C#中当前时间转为时间戳的3个方法的文章就介绍到这了,更多相关C#时间转时间戳内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#连接Oracle数据库使用Oracle.ManagedDataAccess.dll

    C#连接Oracle数据库使用Oracle.ManagedDataAccess.dll

    这篇文章主要介绍了C#使用Oracle.ManagedDataAccess.dll的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 基于C#实现文档打印功能

    基于C#实现文档打印功能

    在软件开发过程中,文档打印是一个常见的功能需求,本文将详细介绍如何在C#中实现文档打印,并通过代码示例介绍的非常详细,对大家的学习或工作有一定帮助,需要的朋友可以参考下
    2024-10-10
  • C#多线程编程中的锁系统(四):自旋锁

    C#多线程编程中的锁系统(四):自旋锁

    这篇文章主要介绍了C#多线程编程中的锁系统(四):自旋锁,本文讲解了基础知识、自旋锁示例、SpinLock等内容,需要的朋友可以参考下
    2015-04-04
  • Unity游戏开发中的桥接模式

    Unity游戏开发中的桥接模式

    桥接模式是Unity游戏开发中常用的设计模式之一,用于将抽象部分与实现部分分离,从而使它们可以独立地变化。通过桥接模式,不同的抽象类可以与不同的实现类组合使用,从而实现更加灵活和可扩展的系统设计。常见的应用包括游戏中的场景渲染、UI界面设计、音效播放等
    2023-05-05
  • C#/.Net 中快速批量给SQLite数据库插入测试数据

    C#/.Net 中快速批量给SQLite数据库插入测试数据

    这篇文章主要介绍了C#/.Net 中快速批量给SQLite数据库插入测试数据,本文直接给出实例代码,需要的朋友可以参考下
    2015-06-06
  • C#利用waveIn实现声音采集

    C#利用waveIn实现声音采集

    wimm这种基于win32 api的库,完全可以直接用C#去调用,将依赖减少到最小,所以本文小编就来和大家介绍一下C#如何使用waveIn实现声音采集,感兴趣的小伙伴可以了解下
    2023-10-10
  • C#实现将商品金额小写转换成大写的方法

    C#实现将商品金额小写转换成大写的方法

    这篇文章主要介绍了C#实现将商品金额小写转换成大写的方法,涉及C#数组与字符串的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • 详解C#App.config和Web.config加密

    详解C#App.config和Web.config加密

    本篇文章给大家分享了C#App.config和Web.config加密的相关知识点以及具体代码步骤,有兴趣的朋友参考学习下。
    2018-05-05
  • Unity游戏开发实现背包系统的示例详解

    Unity游戏开发实现背包系统的示例详解

    这篇文章主要为大家介绍了Unity游戏开发实现背包系统的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • C#使用委托的形式调用线程代码实例

    C#使用委托的形式调用线程代码实例

    今天小编就为大家分享一篇关于C#使用委托的形式调用线程代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论