В Perl вы можете попробовать это:
perl -M'POSIX strftime' -l -e'%rep=( "+" => "%2B", "-" => "%2D"); $d= strftime( "%Y-%m-%dT%H:%M:%S%z", localtime()); $d=~s{([+-])}{$rep{$1}}g; print $d'
в основном захватывает '+' или '-' и заменяет их соответствующим экранированным значением.
, но если подумать об этом, то должен быть модуль для экранирования URL для вас. И действительно, это то, что делает URI :: Escape, так что вы идете:
perl -M'POSIX strftime' -MURI::Escape -l -e'$d= strftime( "%Y%%2D%m-%dT%H:%M:%S%z", localtime()); print uri_escape $d'
Не могу поверить, что нечего сокращать ужасный формат "%Y%%2D%m-%dT%H:%M:%S%z"
strftime.
обновление : поэтому после того, как вы возьмете комментарий Гленна Джекмана и избавитесь от лишней переменной, окончательная строка будет:
perl -M'POSIX strftime' -MURI::Escape -E'say uri_escape strftime "%FT%T%z", localtime'