1

time conversionsinを使用してdatetimepickerinjsを変換しdateているときに違いが生じますphp

私のPHPコードは次のとおりです。

<?php
    date_default_timezone_set('Asia/Calcutta');
    echo date('Y-m-d H:i:s A',strtotime('5/29/2013 00:00PM'));
    //outputs 1970-01-01 05:30:00 AM
    //echo date('Y-m-d H:i:s A',strtotime('5/29/2013 0:00AM'));//same result
    //tested on http://writecodeonline.com/php/
?>

そしてjs

<script>
    var s='5/29/2013 0:00PM';
    parseDate= function(s) {
        var currentYear, currentMonth, currentDay, currentHour, currentMinute;
        arr=s.split(' ');
        dateArr=arr[0].split('/');
        currentYear=dateArr[2];
        currentMonth=parseInt(dateArr[0])-1;
        currentDay=dateArr[1];
        timeArr=arr[1].split(':');
        currentHour=timeArr[0];

        if(s.contains('AM')===false)
        {
            currentHour=parseInt(timeArr[0])+12;
            currentMinute=parseInt(timeArr[1].replace('PM'));
        }
        else
        {
            currentMinute=parseInt(timeArr[1].replace('AM'));
        }
        console.log(currentYear,currentMonth,currentDay,currentHour,currentMinute,0,s.contains('AM'));
        return new Date(currentYear,currentMonth,currentDay,currentHour,currentMinute,0);

    }
    console.log(new Date());
    alert(parseDate(s));
    //outputs Wed May 29 2013 12:00:00 GMT+0530 (India Standard Time)
</script>

フィドルhttp://jsfiddle.net/36vjH/

4

3 に答える 3

1

時刻「00:00PM」の形式が正しくありません。文書化されているように、hh子午線を含む時間は形式"0"?[1-9] | "1"[0-2]、つまりゼロではなく、1 から 12 です。

于 2013-05-29T08:31:47.987 に答える
0

PHP マニュアルからの次の抜粋が関連している可能性があります。

" m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y が想定されます。一方、区切り記号がダッシュ (-) またはドット (.) の場合、ヨーロッパの dmy 形式が想定されます。 "

( http://uk3.php.net/manual/en/function.strtotime.php )

于 2013-05-29T08:19:57.093 に答える