2012/2/1 Michael Van Canneyt <mich...@freepascal.org>: > On Wed, 1 Feb 2012, Luciano de Souza wrote: >> Hello listers, >> >> A strange error came up when formating a date. See this code: >> writeln(formatdatetime('dd/mm/YYYY', now)); >> The answer should be: 31/01/2012 >> The answer was: 31-01-2012 >> I did one test else: >> writeln(formatdatetime('dd$mm$YYYY', now)); >> The answer was: 31$01$2012 >> Yes, the problem seems to be related to the backslash. >> DefaultFormatSettings.DateSeparator := '/'; >> writeln(formatdatetime('dd/mm/YYYY', now)); >> The answer was: 31/01/2012 >> Right! That's the answer. But it was necessary to setup the settings >> manually. >> The test was done with Freepascal 2.4.4 and Ubuntu 10.10. >> Does someone know what is my mistake? > > There is no mistake, all is as it should be. > > In the format string for FormatDateTime, a / means 'use the date separator > of the RTL'. > > By default, on linux the RTL date separator is the '-' character. > > If you want to initialize the RTL locale settings with the system settings, > just put 'clocale' as one of the first units in your uses clause. It will > set all necessary constants. > > if you want an actual / character in your output, you should do a > > writeln(formatdatetime('dd"/"mm"/"YYYY', now)); > > i.e. enclose the special character in double quotes. > > Michael.
o.o' Very nice explanation. Thank you! :) -- Silvio Clécio ==================================== Site - <silvioprog.com.br> LazSolutions - <code.google.com/p/lazsolutions> ==================================== _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal