Le POSIX
seul ne peut pas le faire, non sans l'aide de builtins et un peu de traitement.
Une alternative: Time::Piece est coeur et dans mon expérience beaucoup plus rapide que Posix
perl -MTime::Piece -wE'
$d = "2017-09-23 20:53:00";
$t = localtime->strptime($d, "%Y-%m-%d %H:%M:%S");
$t = gmtime($t->epoch);
say $t->strftime("%Y-%m-%d %H:%M:%S");
'
Cela crée un objet et il convertit ensuite GMT en utilisant pour remplacer gmtime
du module (compatible), returing un objet est également signalé comme GMT.
Le strftime
est le même, mais beaucoup plus léger que l'extension POSIX et strptime
est from FreeBSD. Le module dispose également de nombreuses méthodes pour obtenir diverses parties ou représentations de l'objet datetime sous la forme d'une chaîne, avec quelques autres utilitaires. Voir aussi Time::Seconds.
Le DateTime fait tout cela bien, via son formatters pour l'analyse et la stringification. Mais c'est lourd.
Remarque Il est assez facile de mettre fin à l'aide de ce module correctement, et cette réponse a fait juste avant que ikegami le fixe. Donc s'il vous plaît soyez très prudent avec toutes les utilisations autres que de base. Voir les réponses liées
Notez que la réponse ci-dessus fonctionne pas dans v5.10, apparemment en raison d'un bug alors dans le module.
Qu'est-ce que 'str2time'? – toolic
utilisation POSIX autorise str2time. – rwfitzy
Je ne le vois pas dans les documents POSIX (v5.16 et v5.27) ... – zdim