javascript和php中的日期-时间转换

javascript和php中的日期-时间转换,php,javascript,Php,Javascript,在js中使用datetimepicker并在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',strtoti

js
中使用
datetimepicker
并在
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>

var s='2013年5月29日下午0:00';
parseDate=函数{
var currentYear、currentMonth、currentDay、currentHour、currentMinute;
arr=s.分割(“”);
dateArr=arr[0]。拆分('/');
currentYear=dateArr[2];
currentmount=parseInt(dateArr[0])-1;
currentDay=dateArr[1];
timeArr=arr[1]。拆分(“:”);
currentHour=timeArr[0];
如果(s.contains('AM')==false)
{
currentHour=parseInt(timeArr[0])+12;
currentMinute=parseInt(timeArr[1]。替换('PM');
}
其他的
{
currentMinute=parseInt(timeArr[1]。替换('AM');
}
日志(currentYear,currentMonth,currentDay,currentHour,currentMinute,0,s.contains('AM'));
返回新日期(当前年、当前月、当前日、当前小时、当前分钟、0);
}
console.log(新日期());
警报(解析日期);
//2013年5月29日星期三12:00:00 GMT+0530(印度标准时间)

Fiddle

这是因为strotime不支持您的格式(“2013年5月29日00:00PM”)


Try:strotime('2013-5-29 00:00:00);或者取而代之。

此PHP手册摘录可能与以下内容相关:

m/d/y或d-m-y格式的日期可以通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y格式;而如果分隔符是破折号(-)或点(.),则假定为欧洲的d-m-y格式


()

时间“00:00PM”格式不正确;如文件所述,使用meridian的小时
hh
格式为
“0”[1-9]|“1”[0-2]
,即。E不是零,而是一到十二。

那么如何将
strotime compatible
中的
字符串转换为
php
?正如我提到的,您可以使用这种方法,比如
$d=DateTime::createFromFormat('m/d/Y H:iA','5/29/2013 0:00:PM');echo$d->format(“Y-m-dh:i:s”)伟大的事情strotime不支持格式
mm/dd/y hh:MMmeridian
;只是这些值必须在合法范围内。