JavaScript
const milliseconds = Date.now()
const seconds = Math.floor(milliseconds / 1000)
##Python
import time
seconds = int(time.time())
milliseconds = time.time_ns() // 1_000_000
Java
long milliseconds = System.currentTimeMillis();
long seconds = java.time.Instant.now().getEpochSecond();
PHP, Go, SQL et Shell
PHP: time()
Go: time.Now().Unix()
PostgreSQL: floor(extract(epoch from now()))
Shell: date +%s
Vérifiez si le système de réception attend des secondes ou des millisecondes. L’inadéquation des unités est plus courante qu’une mauvaise horloge.
Vérifiez l'unité avant d'utiliser un extrait
JavaScript Date.now() renvoie des millisecondes. Python time.time() renvoie les secondes avec une partie fractionnaire ; time.time_ns() renvoie des nanosecondes entières. Le Instant de Java sépare les secondes d'époque entières d'un ajustement en nanosecondes. N'ajoutez pas de zéros à une lecture de résolution inférieure et décrivez-la comme une précision nouvellement mesurée.
Utilisez les secondes 1700000000 fixes ou les millisecondes 1700000000000 dans un test unitaire. Les deux devraient produire 2023-11-14T22:13:20Z dans le convertisseur d'horodatage. Les luminaires fixes rendent une erreur de 1 000 plus facile à identifier qu’une valeur d’heure actuelle changeante.
Date JavaScript et heure monotone
const milliseconds = Date.now()
const seconds = Math.floor(milliseconds / 1000)
const isoUtc = new Date(milliseconds).toISOString()
const started = performance.now()
// Run the operation you want to measure.
const elapsedMilliseconds = performance.now() - started
Les trois premières expressions font référence au temps calendaire. Les deux derniers mesurent une durée avec une horloge monotone et ne sont pas des horodatages Unix. Une correction de l'horloge système peut modifier le Date.now(), alors qu'une minuterie de durée écoulée a un objectif différent.
Transportez de grands entiers en toute sécurité
Une valeur nanoseconde à 19 chiffres ne doit pas être convertie en JavaScript Number avant l'analyse. Transportez-le sous forme de chaîne décimale dans JSON lorsque l'environnement de réception ne peut pas conserver de grands entiers. Convertissez la chaîne en BigInt là où elle est prise en charge. Un numéro JSON a peut-être déjà perdu ses derniers chiffres avant que votre convertisseur ne le reçoive.
Pour SQL, vérifiez le moteur de base de données et le paramètre de fuseau horaire de la session. Les fonctions portant des noms similaires peuvent renvoyer des types différents ou appliquer une zone de session. Stockez le contrat unitaire dans la documentation du schéma ou de l'API et vérifiez un appareil connu après chaque importation. Voir ISO et Unix time pour les choix de formats d'échange.