Я перемещаю некоторые сценарии из коробки Linux в коробку Windows, но теперь любые напечатанные числа или даты потеряли свое форматирование (т. Е. Числа были округлены до 2 десятичных разрядов, а даты - 1 июня 2010 года ...).
Я довольно новичок в Perl и не могу понять, откуда они взяли свое форматирование, поскольку в сценарии, похоже, ничего нет.
Я также искал в Google глобальные настройки и переменные среды, но не могу найти ссылки на что-либо, что могло бы сделать это?
До сих пор мне удавалось добавить форматирование чисел вручную, но я все еще немного удивлен, как правильно отформатировать даты, но оба они, кажется, были сделаны в другом месте, где раньше ...
Примеры
В настоящее время у меня есть эта строка:
$text->text("$r_detail->{distance}");
где "$r_detail->{distance}")
- это число, и оно исходит из базы данных, я использовал sprintf('%.1f',$r_detail->{distance})
для его форматирования.
теперь это 12.0988790
после форматирования это 12.10
Дата также поступает из базы данных, и строка, в которой она используется, похожа на:
&wh($th,$td,$hrow,30,"SurveyDate:","$r_survey->{sdate}");
Я вообще не могу понять, как это отформатировать.
Даты теперь выглядят так: !2003-06-23 09:40:00!
прежде чем они были !Jun 23 2002 09:40AM!
(он создает PDF в конце)
Детали базы данных и возможные выводы
Даты хранятся в базе данных в формате: «2003-06-23 09:40:00», они находятся в столбце «smalldatetime».
Числа хранятся как числа с плавающей запятой и имеют 1 или 2 десятичных знака. т.е. 2,10 или 15,8
Так, как предложено ниже (и, как я только что вспомнил, изначально он подключался к БД с помощью DBD :: Sybase, но мне пришлось изменить это на DBI), именно подключение к базе данных изменило мое форматирование.
Как я в итоге отформатировал дату
use Date::Parse;
use POSIX;
my $date ="2002-03-18 10:05:00";
my $parsedDate = str2time($date);
my $formattedDate=strftime "%d %b %Y %I:%M%p", localtime $parsedDate;
Я получил свой ответ еще где, когда я был полностью сбит с толку!
Я не осознавал, что мне нужно сначала разобрать дату!