php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #49489 strftime('%P') generates "Invalid CRT parameters detected".
Submitted: 2009-09-07 07:49 UTC Modified: 2009-09-08 11:31 UTC
From: RQuadling at GMail dot com Assigned:
Status: Not a bug Package: Date/time related
PHP Version: 5.3SVN-2009-09-07 (snap) OS: win32 only - Windows XP SP3
Private report: No CVE-ID:
 [2009-09-07 07:49 UTC] RQuadling at GMail dot com
Description:
------------
Hi.

I was looking at the bug http://bugs.php.net/?id=49481 and saw 
Derick's example at the bottom.

Tried running in and got some errors.

Retrieved latest Win32 VC9 x86 nts snapshot (PHP 5.3.2-dev (cli) 
(built: Sep  7 2009 07:57:33))

Using %P causes the problem below. %p outputs AM (or PM if it is PM) 
as expected.



Previous reports of this error (http://bugs.php.net/bug.php?id=48652) 
says "Error in a dependency".

Not sure when this issue arose.



Reproduce code:
---------------
php -n -d date.timezone="Europe/London" -r "echo strftime('%P');"

Expected result:
----------------
am

Actual result:
--------------
Warning: Invalid CRT parameters detected in Command line code on line 1

Warning: Invalid CRT parameters detected in Command line code on line 1

Warning: Invalid CRT parameters detected in Command line code on line 1

Warning: Invalid CRT parameters detected in Command line code on line 1

Warning: Invalid CRT parameters detected in Command line code on line 1


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-09-07 11:01 UTC] derick@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

Windows doesn\'t support all modifiers, see http://msdn.microsoft.com/en-us/library/az4se3k1(VS.71).aspx for the supported ones (and that link is in the manual at http://uk3.php.net/strftime .
 [2009-09-07 11:39 UTC] rquadling@php.net
Doh.

Seems that even the most recent MSDN docs 
(http://msdn.microsoft.com/en-us/library/az4se3k1(VS.100).aspx and 
http://msdn.microsoft.com/en-us/library/8kb3ddd4(VS.100).aspx) is out 
of date.

No mention of %p, yet it works.



<?php
error_reporting(0);

$a_Remaining = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$a_Formats = array(
  'Day'                 => 'aAdejuw',
  'Week'                => 'UVW',
  'Month'               => 'bBhm',
  'Year'                => 'CgGyY',
  'Time'                => 'HIlMpPrRSTXzZ',
  'Time and Date Stamps'=> 'cDFsx',
  'Miscellaneous'       => 'nt%',
  'Unknown'             => &$a_Remaining
);

foreach($a_Formats as $s_Group => $s_GroupFormats) {
  echo $s_Group, PHP_EOL;
  foreach(range(0, strlen($s_GroupFormats) - 1) as $i_Format) {
    echo
      "\t{$s_GroupFormats[$i_Format]} : ",
      (!($s_Output = strftime('%' . $s_GroupFormats[$i_Format]))
        ? "\t\t\t[Unknown]"
        : $s_Output),
      PHP_EOL;
    $a_Remaining = str_replace($s_GroupFormats[$i_Format], '', 
$a_Remaining);
  }
}


outputs ...

Day
        a : Mon
        A : Monday
        d : 07
        e :                     [Unknown]
        j : 250
        u :                     [Unknown]
        w : 1
Week
        U : 36
        V :                     [Unknown]
        W : 36
Month
        b : Sep
        B : September
        h :                     [Unknown]
        m : 09
Year
        C :                     [Unknown]
        g :                     [Unknown]
        G :                     [Unknown]
        y : 09
        Y : 2009
Time
        H : 12
        I : 12
        l :                     [Unknown]
        M : 35
        p : PM
        P :                     [Unknown]
        r :                     [Unknown]
        R :                     [Unknown]
        S : 03
        T :                     [Unknown]
        X : 12:35:03
        z : GMT Standard Time
        Z : GMT Standard Time
Time and Date Stamps
        c : 09/07/09 12:35:03
        D :                     [Unknown]
        F :                     [Unknown]
        s :                     [Unknown]
        x : 09/07/09
Miscellaneous
        n :                     [Unknown]
        t :                     [Unknown]
        % : %
Unknown
        E :                     [Unknown]
        J :                     [Unknown]
        K :                     [Unknown]
        L :                     [Unknown]
        N :                     [Unknown]
        O :                     [Unknown]
        Q :                     [Unknown]
        f :                     [Unknown]
        i :                     [Unknown]
        k :                     [Unknown]
        o :                     [Unknown]
        q :                     [Unknown]
        v :                     [Unknown]


Thanks Derick. Next time I'll RTFM!
 [2009-09-08 11:31 UTC] rquadling@php.net
Link is wrong. PHP uses VC++ not VC.NET. See http://bugs.php.net/bug.php?id=49498

%p is correctly documented for the VC++ runtime reference.
 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Wed Apr 23 07:02:14 2014 UTC