超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 轉(zhuǎn)換當(dāng)前時(shí)間為時(shí)間戳的 3 個(gè)方法

admin
2024年12月15日 13:19 本文熱度 1077

前言

嗨,大家好!

今天我們來(lái)聊聊時(shí)間戳。

在計(jì)算機(jī)應(yīng)用世界里,無(wú)論是為了記錄事件的發(fā)生時(shí)間、保障數(shù)據(jù)一致性還是提升安全性,時(shí)間戳都是不可或缺的重要工具,特別是在防止重放攻擊和管理用戶會(huì)話方面。

比如在一個(gè)銀行應(yīng)用中,登錄請(qǐng)求和轉(zhuǎn)賬操作都會(huì)攜帶時(shí)間戳。

服務(wù)器端通過驗(yàn)證這些時(shí)間戳來(lái)確保請(qǐng)求是新鮮的,并且不是來(lái)自之前的通信。

如果用戶在一定時(shí)間內(nèi)沒有進(jìn)行任何操作,系統(tǒng)將自動(dòng)注銷該用戶的會(huì)話。

在 C# 中,將當(dāng)前時(shí)間轉(zhuǎn)換為時(shí)間戳是一項(xiàng)簡(jiǎn)單輕松的事情,

以下是如何實(shí)現(xiàn)這一轉(zhuǎn)換的 3 種方法,一起來(lái)看看吧!

1. 使用 DateTime 直接轉(zhuǎn)換

可以利用TotalSeconds 和TotalMilliseconds 方法直接轉(zhuǎn)換,但需要自己計(jì)算當(dāng)前時(shí)間和 Unix 紀(jì)元的差值。

代碼如下,留意代碼中的注釋

using System;

classProgram
{
    static void Main()
    {
        // 使用 DateTime.UtcNow 獲取當(dāng)前 UTC 時(shí)間
        DateTime currentTime = DateTime.UtcNow;

        // 通過與 1970-01-01 00:00:00 的差值來(lái)計(jì)算時(shí)間戳
        // 時(shí)間戳通常是一個(gè)從 Unix 紀(jì)元(即 1970-01-01 00:00:00) 開始計(jì)算
        // 如果有必要,你也可以自定義起始時(shí)間,如 2001-01-01
        // 計(jì)算時(shí)間戳(秒)
        long timestampInSeconds = (long)(currentTime - new DateTime(197011)).TotalSeconds;

        // 計(jì)算時(shí)間戳(毫秒)
        long timestampInMilliseconds = (long)(currentTime - new DateTime(197011)).TotalMilliseconds;

        Console.WriteLine("當(dāng)前時(shí)間的時(shí)間戳(秒): " + timestampInSeconds);
        Console.WriteLine("當(dāng)前時(shí)間的時(shí)間戳(毫秒): " + timestampInMilliseconds);
    }
}

2. 使用 DateTime.UtcNow.Ticks

如果你需要更高的精度,可以使用DateTime.UtcNow.Ticks 來(lái)獲取當(dāng)前 UTC 時(shí)間的 Ticks(100 納秒單位)。

不過這個(gè)值并不是標(biāo)準(zhǔn)的 Unix 時(shí)間戳,需要通過簡(jiǎn)單的數(shù)學(xué)運(yùn)算轉(zhuǎn)換為秒或毫秒級(jí)別的時(shí)間戳。

using System;

classProgram
{
    static void Main()
    {
        // 獲取當(dāng)前 UTC 時(shí)間的 Ticks
        long ticks = DateTime.UtcNow.Ticks;
        
        // 轉(zhuǎn)換為自 Unix 紀(jì)元以來(lái)的毫秒數(shù)
        long unixEpochTicks = new DateTime(197011000, DateTimeKind.Utc).Ticks;
        long millisecondsSinceEpoch = (ticks - unixEpochTicks) / TimeSpan.TicksPerMillisecond;
        
        Console.WriteLine($"當(dāng)前時(shí)間的時(shí)間戳(毫秒): {millisecondsSinceEpoch}");
    }
}

3. 使用 DateTimeOffset

還可以使用DateTimeOffset 類來(lái)獲取時(shí)間戳,這在處理時(shí)區(qū)時(shí)會(huì)更方便。

using System;

classProgram
{
    static void Main()
    {
        // 獲取當(dāng)前時(shí)間
        DateTimeOffset currentTime = DateTimeOffset.UtcNow;

        // 計(jì)算時(shí)間戳(秒)
        long timestampInSeconds = currentTime.ToUnixTimeSeconds();

        // 計(jì)算時(shí)間戳(毫秒)
        long timestampInMilliseconds = currentTime.ToUnixTimeMilliseconds();

        Console.WriteLine("當(dāng)前時(shí)間的時(shí)間戳(秒): " + timestampInSeconds);
        Console.WriteLine("當(dāng)前時(shí)間的時(shí)間戳(毫秒): " + timestampInMilliseconds);
    }
}

總結(jié)

在 C# 中,將當(dāng)前時(shí)間轉(zhuǎn)換為時(shí)間戳是一個(gè)簡(jiǎn)單而重要的操作。

通過以上 3 種方法,你可以輕松獲取 Unix 時(shí)間戳,無(wú)論是以秒還是毫秒為單位。


該文章在 2024/12/16 9:58:41 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved