У меня есть список дат в этом формате:
05/Jan/12 8:00 AM
День всегда состоит из двух цифр, но час может состоять из одной или двух цифр.
Я хотел бы преобразовать это в формат iCal:
20120105T080000Z
Есть ли модуль, который это делает?
Достаточно было бы основного модуля Time :: Piece :
#!/usr/bin/env perl use strict; use warnings; use Time::Piece; my $str = q(05/Jan/12 8:00 AM); my $t = Time::Piece->strptime($str,"%d/%b/%y %I:%M %p"); print $t->datetime, "\n";
Это предполагает ваше местное время и будет содержать тире в выводе:
2012-01-05T08:00:00
Должно быть в состоянии сделать это, используя комбинацию DateTime :: Format :: Strptime и DateTime :: Format :: ICal .
Кроме того, вашВыходные данные отображаются в формате UTC / GMT (обозначены буквой «Z»), но ваш ввод не указывает часовой пояс.Поэтому, как часть вашего решения, вам нужно будет указать, в какой часовой пояс следует вводить время ввода.
См. Также http://datetime.perl.org/wiki/datetime/page/Modules