Convertisseur de timestamp Unix en date : prise en charge des formats 12/24 heures
Convertissez les timestamps Unix en dates et heures lisibles par l'homme. Choisissez entre les formats de temps de 12 heures et de 24 heures avec cet outil de conversion simple et convivial.
Convertisseur de Timestamp Unix
Date & Heure Converties
Documentation
Convertisseur de Timestamp Unix
Introduction
Un timestamp Unix (également connu sous le nom de temps POSIX ou temps Epoch) est un système pour décrire un point dans le temps. C'est le nombre de secondes qui se sont écoulées depuis le 1er janvier 1970 (minuit UTC/GMT), sans compter les secondes intercalaires. Les timestamps Unix sont largement utilisés dans les systèmes informatiques et les langages de programmation car ils fournissent une représentation compacte et indépendante du langage d'un moment spécifique dans le temps.
Ce convertisseur vous permet de transformer un timestamp Unix en un format de date et d'heure lisible par l'homme. Il prend en charge à la fois les formats horaires de 12 heures (AM/PM) et de 24 heures pour s'adapter aux différentes préférences régionales et personnelles.
Comment fonctionnent les timestamps Unix
Les timestamps Unix sont calculés comme le nombre de secondes écoulées depuis l'Epoch Unix (1er janvier 1970, 00:00:00 UTC). Cela les rend particulièrement utiles pour calculer les différences de temps et pour stocker des dates dans un format compact.
La conversion mathématique d'un timestamp Unix en une date calendrier implique plusieurs étapes :
- Commencer avec l'Epoch Unix (1er janvier 1970, 00:00:00 UTC)
- Ajouter le nombre de secondes dans le timestamp
- Tenir compte des années bissextiles, des longueurs de mois variables et d'autres complexités du calendrier
- Appliquer des ajustements de fuseau horaire si nécessaire
Par exemple, le timestamp Unix 1609459200
représente le vendredi 1er janvier 2021, 00:00:00 UTC.
La formule de conversion peut être exprimée comme suit :
La plupart des langages de programmation et des systèmes d'exploitation fournissent des fonctions intégrées pour gérer cette conversion, abstrahant ainsi les calculs complexes du calendrier.
Options de format de temps
Ce convertisseur propose deux options de format de temps :
-
Format 24 heures (parfois appelé "temps militaire") : Les heures varient de 0 à 23, et il n'y a pas de désignation AM/PM. Par exemple, 15h00 est représenté comme 15:00.
-
Format 12 heures : Les heures varient de 1 à 12, avec AM (ante meridiem) pour les heures de minuit à midi, et PM (post meridiem) pour les heures de midi à minuit. Par exemple, 15:00 en format 24 heures est représenté comme 3:00 PM.
Le choix entre ces formats est en grande partie une question de convention régionale et de préférence personnelle :
- Le format 24 heures est couramment utilisé dans la plupart des pays d'Europe, en Amérique latine et en Asie, ainsi que dans les contextes scientifiques, militaires et médicaux dans le monde entier.
- Le format 12 heures est répandu aux États-Unis, au Canada, en Australie et dans certains autres pays anglophones pour un usage quotidien.
Cas limites et limitations
Lorsqu'on travaille avec des timestamps Unix, il est important d'être conscient de plusieurs cas limites et limitations :
-
Timestamps négatifs : Ceux-ci représentent des dates avant l'Epoch Unix (1er janvier 1970). Bien que mathématiquement valides, certains systèmes peuvent ne pas gérer correctement les timestamps négatifs.
-
Le problème de l'année 2038 : Les timestamps Unix sont souvent stockés sous forme d'entiers signés de 32 bits, qui débordent le 19 janvier 2038. Après ce point, les systèmes 32 bits ne pourront pas représenter correctement les temps à moins d'être modifiés pour utiliser un type d'entier plus grand.
-
Timestamps extrêmement grands : Des dates très éloignées dans le futur peuvent ne pas être représentables dans certains systèmes ou peuvent être traitées de manière incohérente.
-
Secondes intercalaires : Le temps Unix ne tient pas compte des secondes intercalaires, qui sont parfois ajoutées à l'UTC pour compenser la rotation irrégulière de la Terre. Cela signifie que le temps Unix n'est pas synchronisé avec précision avec le temps astronomique.
-
Considérations de fuseau horaire : Les timestamps Unix représentent des moments en UTC. La conversion en heure locale nécessite des informations supplémentaires sur le fuseau horaire.
-
Heure d'été : Lors de la conversion des timestamps en heure locale, il faut tenir compte des complexités des transitions d'heure d'été.
Cas d'utilisation
Les timestamps Unix sont utilisés dans de nombreuses applications à travers l'informatique et la gestion des données :
-
Enregistrements de base de données : Les timestamps sont couramment utilisés pour enregistrer quand les entrées ont été créées ou modifiées.
-
Développement web : Les en-têtes HTTP, les cookies et les mécanismes de mise en cache utilisent souvent des timestamps Unix.
-
Fichiers journaux : Les journaux système enregistrent généralement des événements avec des timestamps Unix pour un ordre chronologique précis.
-
Systèmes de contrôle de version : Git et d'autres systèmes de contrôle de version utilisent des timestamps pour enregistrer quand les commits ont été effectués.
-
Réponses API : De nombreuses API web incluent des timestamps dans leurs réponses pour indiquer quand les données ont été générées ou quand les ressources ont été modifiées.
-
Systèmes de fichiers : Les heures de création et de modification des fichiers sont souvent stockées sous forme de timestamps Unix.
-
Gestion de session : Les applications web utilisent des timestamps pour déterminer quand les sessions utilisateur doivent expirer.
-
Analyse de données : Les timestamps fournissent un moyen standardisé de travailler avec des données temporelles dans les applications d'analyse.
Alternatives
Bien que les timestamps Unix soient largement utilisés, il existe des formats de représentation du temps alternatifs qui peuvent être plus appropriés dans certains contextes :
-
ISO 8601 : Un format de chaîne standardisé (par exemple, "2021-01-01T00:00:00Z") qui est lisible par l'homme tout en maintenant la possibilité de tri. Il est souvent préféré pour l'échange de données et les applications destinées aux utilisateurs.
-
RFC 3339 : Un profil de l'ISO 8601 utilisé dans les protocoles Internet, avec des exigences de formatage plus strictes.
-
Formats lisibles par l'homme : Les chaînes de date localisées (par exemple, "1er janvier 2021") sont plus appropriées pour l'interaction directe avec l'utilisateur mais sont moins adaptées au calcul.
-
Microsoft FILETIME : Une valeur de 64 bits représentant le nombre d'intervalles de 100 nanosecondes depuis le 1er janvier 1601, utilisée dans les systèmes Windows.
-
Numéro de jour julien : Utilisé en astronomie et dans certaines applications scientifiques, comptant les jours depuis le 1er janvier 4713 avant notre ère.
Le choix du format de temps dépend de facteurs tels que :
- Précision requise
- Besoins de lisibilité humaine
- Contraintes de stockage
- Compatibilité avec les systèmes existants
- Plage de dates à représenter
Histoire
Le concept de temps Unix a vu le jour avec le développement du système d'exploitation Unix aux Laboratoires Bell à la fin des années 1960 et au début des années 1970. La décision d'utiliser le 1er janvier 1970 comme Epoch était quelque peu arbitraire mais pratique pour l'époque : elle était suffisamment récente pour minimiser les besoins de stockage pour les dates d'intérêt, mais suffisamment éloignée dans le passé pour être utile pour les données historiques.
L'implémentation originale utilisait un entier signé de 32 bits pour stocker le nombre de secondes, ce qui était adéquat pour la durée de vie attendue des systèmes Unix à l'époque. Cependant, cette décision a conduit au problème de l'année 2038 (parfois appelé "Y2K38" ou le "bug du millénaire Unix"), car les entiers signés de 32 bits ne peuvent représenter des dates que jusqu'au 19 janvier 2038 (03:14:07 UTC).
À mesure que Unix et les systèmes similaires à Unix ont gagné en popularité, le timestamp Unix est devenu un standard de facto pour représenter le temps dans l'informatique. Il a été adopté par de nombreux langages de programmation, bases de données et applications, s'étendant bien au-delà de son environnement Unix d'origine.
Les systèmes modernes utilisent de plus en plus des entiers de 64 bits pour les timestamps, ce qui étend la plage représentable à environ 292 milliards d'années dans les deux directions à partir de l'Epoch, résolvant ainsi efficacement le problème de l'année 2038. Cependant, les systèmes et applications hérités peuvent encore être vulnérables.
La simplicité et l'utilité du timestamp Unix ont assuré sa pertinence continue malgré le développement de formats de représentation du temps plus sophistiqués. Il reste un concept fondamental dans l'informatique, sous-tendant une grande partie de notre infrastructure numérique.
Exemples de code
Voici des exemples de la façon de convertir des timestamps Unix en dates lisibles par l'homme dans divers langages de programmation :
1// Conversion de timestamp en JavaScript
2function convertUnixTimestamp(timestamp, use12Hour = false) {
3 // Créer un nouvel objet Date (JavaScript utilise les millisecondes)
4 const date = new Date(timestamp * 1000);
5
6 // Options de formatage
7 const options = {
8 year: 'numeric',
9 month: 'long',
10 day: 'numeric',
11 weekday: 'long',
12 hour: use12Hour ? 'numeric' : '2-digit',
13 minute: '2-digit',
14 second: '2-digit',
15 hour12: use12Hour
16 };
17
18 // Convertir en chaîne en utilisant le formatage local
19 return date.toLocaleString(undefined, options);
20}
21
22// Exemple d'utilisation
23const timestamp = 1609459200; // 1er janvier 2021 00:00:00 UTC
24console.log(convertUnixTimestamp(timestamp, false)); // Format 24 heures
25console.log(convertUnixTimestamp(timestamp, true)); // Format 12 heures
26
1# Conversion de timestamp en Python
2import datetime
3
4def convert_unix_timestamp(timestamp, use_12hour=False):
5 # Convertir le timestamp Unix en objet datetime
6 date = datetime.datetime.fromtimestamp(timestamp)
7
8 # Format de la chaîne de date
9 if use_12hour:
10 format_string = "%A, %B %d, %Y %I:%M:%S %p" # Format 12 heures avec AM/PM
11 else:
12 format_string = "%A, %B %d, %Y %H:%M:%S" # Format 24 heures
13
14 return date.strftime(format_string)
15
16# Exemple d'utilisation
17timestamp = 1609459200 # 1er janvier 2021 00:00:00 UTC
18print(convert_unix_timestamp(timestamp, False)) # Format 24 heures
19print(convert_unix_timestamp(timestamp, True)) # Format 12 heures
20
1<?php
2// Conversion de timestamp en PHP
3function convertUnixTimestamp($timestamp, $use12Hour = false) {
4 // Chaîne de format
5 $formatString = $use12Hour
6 ? 'l, F j, Y g:i:s A' // Format 12 heures avec AM/PM
7 : 'l, F j, Y H:i:s'; // Format 24 heures
8
9 // Convertir et formater la date
10 return date($formatString, $timestamp);
11}
12
13// Exemple d'utilisation
14$timestamp = 1609459200; // 1er janvier 2021 00:00:00 UTC
15echo convertUnixTimestamp($timestamp, false) . "\n"; // Format 24 heures
16echo convertUnixTimestamp($timestamp, true) . "\n"; // Format 12 heures
17?>
18
1// Conversion de timestamp en Java
2import java.time.Instant;
3import java.time.LocalDateTime;
4import java.time.ZoneId;
5import java.time.format.DateTimeFormatter;
6
7public class UnixTimestampConverter {
8 public static String convertUnixTimestamp(long timestamp, boolean use12Hour) {
9 // Convertir le timestamp Unix en Instant, puis en LocalDateTime
10 Instant instant = Instant.ofEpochSecond(timestamp);
11 LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
12
13 // Créer un formateur basé sur le format souhaité
14 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
15 use12Hour ? "EEEE, MMMM d, yyyy h:mm:ss a" : "EEEE, MMMM d, yyyy HH:mm:ss"
16 );
17
18 // Formater la date
19 return dateTime.format(formatter);
20 }
21
22 public static void main(String[] args) {
23 long timestamp = 1609459200; // 1er janvier 2021 00:00:00 UTC
24 System.out.println(convertUnixTimestamp(timestamp, false)); // Format 24 heures
25 System.out.println(convertUnixTimestamp(timestamp, true)); // Format 12 heures
26 }
27}
28
1// Conversion de timestamp en C#
2using System;
3
4class UnixTimestampConverter
5{
6 public static string ConvertUnixTimestamp(long timestamp, bool use12Hour)
7 {
8 // Convertir le timestamp Unix en DateTime
9 // Les timestamps Unix sont des secondes depuis 1970-01-01
10 DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
11
12 // Chaîne de format basée sur la préférence de 12 heures ou 24 heures
13 string formatString = use12Hour
14 ? "dddd, MMMM d, yyyy h:mm:ss tt" // Format 12 heures avec AM/PM
15 : "dddd, MMMM d, yyyy HH:mm:ss"; // Format 24 heures
16
17 // Retourner la chaîne de date formatée
18 return dateTime.ToString(formatString);
19 }
20
21 static void Main()
22 {
23 long timestamp = 1609459200; // 1er janvier 2021 00:00:00 UTC
24 Console.WriteLine(ConvertUnixTimestamp(timestamp, false)); // Format 24 heures
25 Console.WriteLine(ConvertUnixTimestamp(timestamp, true)); // Format 12 heures
26 }
27}
28
1# Conversion de timestamp en Ruby
2require 'time'
3
4def convert_unix_timestamp(timestamp, use_12hour = false)
5 # Convertir le timestamp Unix en objet Time
6 time = Time.at(timestamp)
7
8 # Formater en fonction de la préférence de 12 heures ou 24 heures
9 if use_12hour
10 time.strftime("%A, %B %d, %Y %I:%M:%S %p") # Format 12 heures avec AM/PM
11 else
12 time.strftime("%A, %B %d, %Y %H:%M:%S") # Format 24 heures
13 end
14end
15
16# Exemple d'utilisation
17timestamp = 1609459200 # 1er janvier 2021 00:00:00 UTC
18puts convert_unix_timestamp(timestamp, false) # Format 24 heures
19puts convert_unix_timestamp(timestamp, true) # Format 12 heures
20
1// Conversion de timestamp en Go
2package main
3
4import (
5 "fmt"
6 "time"
7)
8
9func convertUnixTimestamp(timestamp int64, use12Hour bool) string {
10 // Convertir le timestamp Unix en Time
11 t := time.Unix(timestamp, 0)
12
13 // Chaîne de format basée sur la préférence de 12 heures ou 24 heures
14 formatString := "Monday, January 2, 2006 "
15 if use12Hour {
16 formatString += "3:04:05 PM" // Format 12 heures avec AM/PM
17 } else {
18 formatString += "15:04:05" // Format 24 heures
19 }
20
21 // Retourner le temps formaté
22 return t.Format(formatString)
23}
24
25func main() {
26 timestamp := int64(1609459200) // 1er janvier 2021 00:00:00 UTC
27 fmt.Println(convertUnixTimestamp(timestamp, false)) // Format 24 heures
28 fmt.Println(convertUnixTimestamp(timestamp, true)) // Format 12 heures
29}
30
1// Conversion de timestamp en Swift
2import Foundation
3
4func convertUnixTimestamp(_ timestamp: Int, use12Hour: Bool) -> String {
5 // Créer une Date à partir du timestamp Unix
6 let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
7
8 // Créer un DateFormatter
9 let formatter = DateFormatter()
10 formatter.dateStyle = .full
11
12 // Définir le style d'heure en fonction de la préférence de 12 heures ou 24 heures
13 if use12Hour {
14 formatter.timeStyle = .medium
15 formatter.amSymbol = "AM"
16 formatter.pmSymbol = "PM"
17 } else {
18 formatter.timeStyle = .medium
19 formatter.dateFormat = formatter.dateFormat?.replacingOccurrences(of: "h:mm:ss a", with: "HH:mm:ss")
20 }
21
22 // Retourner la date formatée
23 return formatter.string(from: date)
24}
25
26// Exemple d'utilisation
27let timestamp = 1609459200 // 1er janvier 2021 00:00:00 UTC
28print(convertUnixTimestamp(timestamp, use12Hour: false)) // Format 24 heures
29print(convertUnixTimestamp(timestamp, use12Hour: true)) // Format 12 heures
30
1# Conversion de timestamp en R
2convert_unix_timestamp <- function(timestamp, use_12hour = FALSE) {
3 # Convertir le timestamp Unix en datetime POSIXct
4 date_time <- as.POSIXct(timestamp, origin = "1970-01-01", tz = "UTC")
5
6 # Formater en fonction de la préférence de 12 heures ou 24 heures
7 if (use_12hour) {
8 format_string <- "%A, %B %d, %Y %I:%M:%S %p" # Format 12 heures avec AM/PM
9 } else {
10 format_string <- "%A, %B %d, %Y %H:%M:%S" # Format 24 heures
11 }
12
13 # Retourner la chaîne de date formatée
14 format(date_time, format_string)
15}
16
17# Exemple d'utilisation
18timestamp <- 1609459200 # 1er janvier 2021 00:00:00 UTC
19cat(convert_unix_timestamp(timestamp, FALSE), "\n") # Format 24 heures
20cat(convert_unix_timestamp(timestamp, TRUE), "\n") # Format 12 heures
21
1% Conversion de timestamp en MATLAB
2function formattedDate = convertUnixTimestamp(timestamp, use12Hour)
3 % Convertir le timestamp Unix en datetime MATLAB
4 % Les dates Excel sont des jours depuis 1900-01-01, avec 1 = 1900-01-01
5 % Les timestamps Unix sont des secondes depuis 1970-01-01
6
7 % D'abord convertir en format de date Excel
8 % 25569 est le nombre de jours entre 1900-01-01 et 1970-01-01
9 excelDate = (timestamp / 86400) + 25569;
10
11 % Formater la date en fonction de la préférence de 12 heures ou 24 heures
12 if use12Hour
13 formattedDate = datestr(excelDate, 'dddd, mmmm dd, yyyy h:mm:ss AM/PM');
14 else
15 formattedDate = datestr(excelDate, 'dddd, mmmm dd, yyyy hh:mm:ss');
16 end
17end
18
19% Exemple d'utilisation
20timestamp = 1609459200; % 1er janvier 2021 00:00:00 UTC
21disp(convertUnixTimestamp(timestamp, false)) % Format 24 heures
22disp(convertUnixTimestamp(timestamp, true)) % Format 12 heures
23
1' Conversion de timestamp en Excel VBA
2Function ConvertUnixTimestamp(timestamp As Long, Optional use12Hour As Boolean = False) As String
3 ' Convertir le timestamp Unix en date/heure Excel
4 ' Les dates Excel sont des jours depuis 1900-01-01, avec 1 = 1900-01-01
5 ' Les timestamps Unix sont des secondes depuis 1970-01-01
6
7 ' D'abord convertir au format de date Excel
8 ' 25569 est le nombre de jours entre 1900-01-01 et 1970-01-01
9 Dim excelDate As Double
10 excelDate = (timestamp / 86400) + 25569
11
12 ' Formater la date en fonction de la préférence de 12 heures ou 24 heures
13 If use12Hour Then
14 ConvertUnixTimestamp = Format(excelDate, "dddd, mmmm d, yyyy h:mm:ss AM/PM")
15 Else
16 ConvertUnixTimestamp = Format(excelDate, "dddd, mmmm d, yyyy hh:mm:ss")
17 End If
18End Function
19
20' Utilisation dans une feuille de calcul :
21' =ConvertUnixTimestamp(1609459200, TRUE) ' Format 12 heures
22' =ConvertUnixTimestamp(1609459200, FALSE) ' Format 24 heures
23
Gestion des cas limites
Lorsque vous travaillez avec des timestamps Unix, il est important de gérer correctement les cas limites. Voici des exemples de gestion de certains cas limites courants :
1// Gestion des cas limites en JavaScript
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3 // Vérifier si le timestamp est valide
4 if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
5 return "Timestamp invalide";
6 }
7
8 // Vérifier les timestamps négatifs (dates avant 1970)
9 if (timestamp < 0) {
10 // Certains navigateurs pourraient ne pas gérer correctement les timestamps négatifs
11 // Utiliser une approche plus robuste pour les dates avant 1970
12 const date = new Date(timestamp * 1000);
13 if (isNaN(date.getTime())) {
14 return "Date invalide (avant 1970)";
15 }
16 }
17
18 // Vérifier le problème de Y2K38 (pour les systèmes 32 bits)
19 const maxInt32 = 2147483647; // Valeur maximale pour un entier signé de 32 bits
20 if (timestamp > maxInt32) {
21 // Envisager d'utiliser BigInt pour des timestamps très grands dans le JavaScript moderne
22 console.warn("Le timestamp dépasse la limite des entiers de 32 bits (problème Y2K38)");
23 }
24
25 // Poursuivre avec la conversion normale
26 try {
27 const date = new Date(timestamp * 1000);
28 const options = {
29 year: 'numeric',
30 month: 'long',
31 day: 'numeric',
32 weekday: 'long',
33 hour: use12Hour ? 'numeric' : '2-digit',
34 minute: '2-digit',
35 second: '2-digit',
36 hour12: use12Hour
37 };
38 return date.toLocaleString(undefined, options);
39 } catch (error) {
40 return "Erreur lors de la conversion du timestamp : " + error.message;
41 }
42}
43
Références
-
"Temps Unix." Wikipédia, Fondation Wikimedia, https://fr.wikipedia.org/wiki/Temps_Unix
-
"Problème de l'année 2038." Wikipédia, Fondation Wikimedia, https://fr.wikipedia.org/wiki/Probl%C3%A8me_de_l%27ann%C3%A9e_2038
-
Olson, Arthur David. "Les Complexités du Temps Calendrier." The Open Group, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf
-
"ISO 8601." Wikipédia, Fondation Wikimedia, https://fr.wikipedia.org/wiki/ISO_8601
-
"RFC 3339 : Date et Heure sur Internet : Timestamps." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339
-
Kernighan, Brian W., et Dennis M. Ritchie. "Le Langage de Programmation C." Prentice Hall, 1988.
Retour d'information
Cliquez sur la notification de retour d'information pour commencer à donner votre avis sur cet outil
Outils Connexes
Découvrez d'autres outils qui pourraient être utiles pour votre flux de travail