I saw in the doxygen comment that the behaviour is the expected one:

  %j   milliseconds (1-3 digits, optionally leading '.')
  %J   milliseconds (1-3 digits, with leading '.')

Maybe it would be an  idea to introduce a new letter like:

%K   milliseconds (exactly 3 digits, with leading '.')




Am 30.01.2014 11:48, schrieb Andreas Welchlin:
> Hi All,
>
> I am using the DateTime class in the cxxtools lib.
>
> In order to get a string format including milliseconds I called
> DateTime::toString() like:
>
> datetime.toString("%Y%m%d_%H%M%S%j");
>
> I expected the milliseconds to have 3 digits in any case but the
> behaviour is different:
>
> When
> milliseconds = 345 then %j adds ".345"
>
> milliseconds = 340 then %j adds ".34"
>
> and when milliseconds is 0 then it adds nothing.
>
> Looking into the code:
> --------------------------------------------------------------------------
>     case 'j': if (mseconds != 0)
>                       {
>                         str += '.';
>                         str += (mseconds / 100 + '0');
>                         if (mseconds % 100 != 0)
>                         {
>                           str += (mseconds / 10 % 10 + '0');
>                           if (mseconds % 10 != 0)
>                             str += (mseconds % 10 + '0');
>                         }
>                       }
>                       break;
>
>             case 'J': str += '.';
>                       str += (mseconds / 100 + '0');
>                       if (mseconds % 100 != 0)
>                       {
>                         str += (mseconds / 10 % 10 + '0');
>                         if (mseconds % 10 != 0)
>                           str += (mseconds % 10 + '0');
>                       }
>                       break;
> --------------------------------------------------------------------------
>
> The only difference between %J and %j seems to be that %J does at least
> add '.0'.
> So for me it would be better to use %J. But anyway I do not see 3 digits.
>
> I would like to suggest to change the code to something like:
>
> case 'J':
>                         str += '.';
>                         str += (mseconds / 100 + '0');
>                         str += (mseconds / 10 % 10 + '0');
>                         str += (mseconds % 10 + '0');
>                         break;
>
> Then there are always three digits at the end.
>
> Any suggestions?
>
> Regards,
> Andreas
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> WatchGuard Dimension instantly turns raw network data into actionable
> security intelligence. It gives you real-time visual feedback on key
> security issues and trends.  Skip the complicated setup - simply import
> a virtual appliance and go from zero to informed in seconds.
> http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
> _______________________________________________
> Tntnet-general mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/tntnet-general



------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Tntnet-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tntnet-general

Reply via email to