C#中當前時間轉(zhuǎn)為時間戳的3個方法
前言
今天我們來聊聊時間戳。
在計算機應用世界里,無論是為了記錄事件的發(fā)生時間、保障數(shù)據(jù)一致性還是提升安全性,時間戳都是不可或缺的重要工具,特別是在防止重放攻擊和管理用戶會話方面。
比如在一個銀行應用中,登錄請求和轉(zhuǎn)賬操作都會攜帶時間戳。
服務器端通過驗證這些時間戳來確保請求是新鮮的,并且不是來自之前的通信。
如果用戶在一定時間內(nèi)沒有進行任何操作,系統(tǒng)將自動注銷該用戶的會話。
在 C# 中,將當前時間轉(zhuǎn)換為時間戳是一項簡單輕松的事情,
以下是如何實現(xiàn)這一轉(zhuǎn)換的 3 種方法,一起來看看吧!
1. 使用 DateTime 直接轉(zhuǎn)換
可以利用TotalSeconds
和TotalMilliseconds
方法直接轉(zhuǎn)換,但需要自己計算當前時間和 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 時間戳,需要通過簡單的數(shù)學運算轉(zhuǎn)換為秒或毫秒級別的時間戳。
using System; classProgram { static void Main() { // 獲取當前 UTC 時間的 Ticks long ticks = DateTime.UtcNow.Ticks; // 轉(zhuǎn)換為自 Unix 紀元以來的毫秒數(shù) 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
類來獲取時間戳,這在處理時區(qū)時會更方便。
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# 中,將當前時間轉(zhuǎn)換為時間戳是一個簡單而重要的操作。
通過以上 3 種方法,你可以輕松獲取 Unix 時間戳,無論是以秒還是毫秒為單位。
到此這篇關于C#中當前時間轉(zhuǎn)為時間戳的3個方法的文章就介紹到這了,更多相關C#時間轉(zhuǎn)時間戳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
webBrowser執(zhí)行js的方法,并返回值,c#后臺取值的實現(xiàn)
下面小編就為大家?guī)硪黄獁ebBrowser執(zhí)行js的方法,并返回值,c#后臺取值的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12淺析WPF中Binding的數(shù)據(jù)校驗和類型轉(zhuǎn)換
在WPF開發(fā)中,Binding實現(xiàn)了數(shù)據(jù)在Source和Target之間的傳遞和流通,那在WPF開發(fā)中,如何實現(xiàn)數(shù)據(jù)的校驗和類型轉(zhuǎn)換呢,下面就跟隨小編一起學習一下吧2024-03-03C# 使用Fiddler捕獲本地HttpClient發(fā)出的請求操作
這篇文章主要介紹了C# 使用Fiddler捕獲本地HttpClient發(fā)出的請求操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Unity編輯器選擇器工具類Selection常用函數(shù)示例詳解
這篇文章主要為大家介紹了Unity編輯器選擇器工具類Selection常用函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08