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

Reply via email to