Comprendre et utiliser le temps Epoch dans PowerShell est essentiel pour les opérations de date et d'heure dans des scénarios tels que les jetons JWT, les assertions ou les journaux système. Ce guide donne des exemples de manipulation du temps Epoch et de sa conversion en formats lisibles par l'humain avec PowerShell.
Qu'est-ce que le temps Epoch ?
Le temps Epoch, également appelé temps Unix, temps POSIX ou horodatage Unix, est le nombre de secondes écoulées depuis le 1er janvier 1970 (minuit UTC/GMT), sans compter les secondes intercalaires. Il est largement utilisé en programmation et dans les systèmes comme représentation standard du temps.
Dans les jetons JWT, le temps Epoch est couramment utilisé pour des claims tels que iat (délivré à), nbf (pas avant) et exp (expiration). Voici un exemple de temps Epoch dans un jeton JWT :
{
"typ": "JWT",
"alg": "RS256",
"x5t": "3PaK4EfYBNQu3CtjYsa3YmhqQ5E0",
"kid": "3PaK4EfYBNQu3CtjYsa3YmhqQ5E0",
"aud": "00000003-0000-0000-c000-000000000000",
"iss": "https://sts.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/",
"iat": 1729784492,
"nbf": 1729784492,
"exp": 1729787119
}
Travailler avec les dates et les heures dans PowerShell
Obtenir la date et l'heure actuelles en UTC
Pour obtenir la date et l'heure actuelles en UTC :
$utc = (Get-Date).ToUniversalTime()
Convertir au format standard ISO 8601
Pour convertir la date UTC au format ISO 8601 :
Get-Date ((Get-Date).ToUniversalTime()) -Format o
Ajouter et soustraire du temps
Vous pouvez ajouter ou soustraire du temps à la date actuelle dans PowerShell avec les commandes suivantes :
Ajouter du temps
Get-Date ($utc).AddYears(1) -Format o
Get-Date ($utc).AddMonths(1) -Format o
Get-Date ($utc).AddDays(1) -Format o
Get-Date ($utc).AddHours(1) -Format o
Get-Date ($utc).AddMinutes(1) -Format o
Get-Date ($utc).AddSeconds(1) -Format o
Soustraire du temps
Get-Date ($utc).AddYears(-1) -Format o
Get-Date ($utc).AddMonths(-1) -Format o
Get-Date ($utc).AddDays(-1) -Format o
Get-Date ($utc).AddHours(-1) -Format o
Get-Date ($utc).AddMinutes(-1) -Format o
Get-Date ($utc).AddSeconds(-1) -Format o
Convertir le temps Epoch en date lisible
Pour convertir le temps Epoch (par exemple, le claim exp dans JWT) en date lisible par l'humain :
$epoch = "1729838496"
(Get-Date -Date "1/1/1970").AddSeconds($epoch)
Générer le temps Epoch
Pour générer le temps Epoch à partir de la date actuelle :
Get-Date $((Get-Date).ToUniversalTime()) -UFormat %s
Pour générer le temps Epoch avec 12 heures d'avance :
Get-Date $((Get-Date).AddHours(12).ToUniversalTime()) -UFormat %s
Outils en ligne utiles
Si vous avez besoin d'un outil de conversion rapide, vous pouvez utiliser :
Conclusion
PowerShell facilite le travail avec le temps Epoch pour divers cas d'usage, notamment les claims de jetons JWT, les assertions et les journaux système. Grâce aux commandes ci-dessus, vous pouvez manipuler et convertir le temps Epoch efficacement et garantir une gestion précise du temps dans vos scripts et applications.