簡體   English   中英

C# - 從 Int 值中獲取日期

[英]C# - Get Date from Int Value

再會,

我正在嘗試檢查令牌到期日期是否已過期。 我正在使用 JWT 生成我的令牌。 如果我的令牌仍然有效,我可以使用此代碼檢查我的 javascript 環境。

if (decodedToken.exp < new Date().getTime() / 1000) {
    alert("Session expired);
}

// decodedToken.exp returns a value like "1556797243"

但我的問題是,如果令牌已經過期,我不知道如何使用 C# 代碼進行驗證。

我試過這樣的事情,

// suppose I have a value of "1556797243"
var expirationDate = DateTime.ParseExact(expiration, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);

但它不起作用。

.NET具有解析Unix時間戳的內置方法,但是它位於DateTimeOffset而不是DateTime上,如您所料:

var expirationTime = DateTimeOffset.FromUnixTimeSeconds(expiration).DateTime;

如果expiration是一個字符串,則需要將其解析為長整型:

var expirationTime = DateTimeOffset.FromUnixTimeSeconds(long.Parse(expiration)).DateTime;

您可以使用此功能將unixTime轉換為DateTime

public static class DateUtil
    {
    private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

    public static DateTime FromUnixTime(long unixTime)
    {
        return Epoch.AddMilliseconds(unixTime).ToLocalTime();
    }
}
var expirationDate  = DateUtil.FromUnixTime(yourtime);

請參閱此答案以檢查刻度日期並檢查到期日期

https://stackoverflow.com/a/73531009/3675579

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM