Extraits de timestamp Unix en Ruby
Exemples Ruby pour obtenir des secondes Unix, dériver des millisecondes, convertir des timestamps en objets Time, formater la sortie UTC et parser des chaînes de date.
Time.now.to_i(Time.now.to_f * 1000).roundTime.at(1700000000)require "time"
Time.at(1700000000).utc.strftime("%Y-%m-%d %H:%M:%S")
# With tzinfo gem:
require "tzinfo"
tz = TZInfo::Timezone.get("America/New_York")
tz.utc_to_local(Time.at(1700000000).utc)Time.at(1700000000).strftime("%Y-%m-%d %H:%M:%S")require "time"
Time.parse("2023-11-15T06:13:20Z").to_iBases des horodatages en Ruby
Le Time.now.to_i de Ruby renvoie des secondes Unix. Utilisez Time.now.to_f quand vous avez besoin de fractions de seconde ou voulez calculer des millisecondes pour des API qui attendent des horodatages de style JavaScript.
Convertir et formater Time en Ruby
Utilisez Time.at(timestamp) pour créer un objet Time à partir de secondes Unix. Appelez utc avant le formatage quand vous avez besoin d'une sortie stable qui ne dépend pas du fuseau local de la machine.
Notes de production pour Ruby
Les méthodes Time de Ruby sont concises, mais les fuseaux par défaut peuvent varier entre ordinateurs portables, serveurs et workers d'arrière-plan. Conservez les horodatages persistés en secondes Unix ou en chaînes UTC, puis appliquez le fuseau de l'application au niveau de la présentation. Lors de l'analyse d'une saisie utilisateur, incluez le décalage ou le fuseau afin que les règles d'heure d'été ne soient pas devinées à tort.
- Utilisez Time.now.to_i pour des secondes Unix
- Utilisez (Time.now.to_f * 1000).round pour des valeurs en millisecondes
- Utilisez Time.at(seconds).utc pour une sortie UTC stable
- Utilisez Time.parse uniquement avec des chaînes qui incluent un fuseau ou un décalage
FAQ
- Time.now.to_i renvoie-t-il des millisecondes ?
- Non. Time.now.to_i renvoie des secondes Unix entières. Utilisez Time.now.to_f si vous avez besoin de fractions de seconde ou voulez dériver des millisecondes.
- Pourquoi appeler utc avant de formater ?
- utc rend la sortie indépendante du fuseau local de la machine. C'est utile pour les logs, les charges utiles d'API et les attentes de test.
- Comment vérifier un horodatage Ruby ?
- Utilisez Time.at(seconds).utc.iso8601 et comparez le résultat au moment UTC attendu avant d'écrire la valeur dans un job, une API ou une base de données.