C # - получить дату от Int Value - PullRequest
1 голос
/ 01 мая 2019

Добрый день,

Я пытаюсь проверить, не истек ли срок действия токена.Я использую 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);

Но это не работает.

Ответы [ 2 ]

5 голосов
/ 01 мая 2019

.NET имеет встроенный способ синтаксического анализа метки времени Unix, но он находится на DateTimeOffset, а не на DateTime, как вы могли бы ожидать:

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

Если expiration - строка, которую вам нужно проанализироватьэто в длинном первом:

var expirationTime = DateTimeOffset.FromUnixTimeSeconds(long.Parse(expiration)).DateTime;
2 голосов
/ 01 мая 2019

Вы можете использовать эту функцию для преобразования из 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...