Perl obtenir l'heure UTC et obtenir la différence entre l'UTC horodateurs
Je suis à la recherche pour certains Perl de l'aide sur comment faire cela correctement. Je n'ai pas l'esprit à l'aide d'une bibliothèque pour ce faire.
Je suis en tirant un UTC horodatage à partir d'une base de données mySQL, dans ce format: 2012-02-06 13:50:09
J'ai besoin de Perl à tirer de l'heure UTC actuelle et obtenir la différence entre les deux temps de timbres en quelques minutes (ou secondes). J'ai fait ça dans un sous-processus Unix, mais je vais avoir de la difficulté à obtenir l'heure UTC et le comparant, depuis la zone locale est en cours d'exécution sur l'heure de l'est. Je ne me dérangerait pas de le faire dans le temps Unix, mais ne savez pas comment obtenir avec précision l'heure UTC de la comparer à la "last_timestamp" qui est UTC timestamp à partir de mysql.
my $date_diff = qx(date -d "$(date +'%F %T')" +%s) -
qx(date -d "$last_timestamp" +%s);
Comme toujours, votre aide est grandement apprécié et valorisé.
OriginalL'auteur user1130364 | 2012-02-06
Vous devez vous connecter pour publier un commentaire.
Paradigme de l'erreur. Unix boîtes de ne pas "courir sur l'heure de l'est" ou "exécuter sur l'heure du Pacifique". Unix boîtes à exécuter sur les "secondes depuis epoch", et un fuseau horaire par défaut qui est utilisé pour représenter les valeurs de temps pour les utilisateurs. Une fois que vous comprenez cela, beaucoup d'autres choses utiles gratuitement.
Vous pouvez faire 'date' retour de l'heure UTC de l'utilisation de 'date -u'
Perl
construit en fonction des retours de secondes depuis l'epoch (il n'y a pas de temps horaire). Vous pouvez ensuite convertir ce à l'UTC Y-M-D-H-M-S des valeurs à l'aide de Perl
gmtime
fonction intégrée. L'appel degmtime
avec toute arguments est effectivement la même quegmtime(time)
.Utilisation DateTime::Format::MySQL pour analyser MySQL valeurs de date/heure. Vous pouvez également trouver DateTime utile. Aussi, voir http://datetime.perl.org/
Vous n'avez pas à appeler
gmtime(time)
,gmtime()
sera essentiellement appeltime()
pour vous. ( Ajouté à la réponse )OriginalL'auteur zgpmax
Une façon est d'utiliser la base Heure: À La Pièce
OriginalL'auteur JRFerguson
Voici une solution à l'aide de
DateTime
La sortie est:
qui sons sur la droite.
OriginalL'auteur
UNIX_TIMESTAMP
(your_datetime_field) à partir de MySQLsprintf ("%02d min %02d s", $delta_min, $delta_s);
OriginalL'auteur Dmitry Ovsyanko