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: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: RQuadling at GMail dot com
New email:
PHP Version: OS:

 

 [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

Pull Requests

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-2024 The PHP Group
All rights reserved.
Last updated: Fri Nov 22 15:01:32 2024 UTC