2013-05-29 4 views
1

Я получаю другую time conversions при использовании datetimepicker в js и преобразования date в phpДата преобразования времени в JavaScript и 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> 

Fiddle http://jsfiddle.net/36vjH/

ответ

1

Thats потому, что strtotime не поддерживает ваш формат ('29.02.2012 00:00 PM');

Попытка: strtotime ('2013-5-29 00:00:00); или http://www.php.net/manual/en/datetime.createfromformat.php.

+0

Итак, как мне преобразовать 'string' в' strtotime compatible' в 'php'? –

+0

Как я уже упоминал, вы можете использовать http://www.php.net/manual/en/datetime.createfromformat.php этот метод – gries

+0

Как '$ d = DateTime :: createFromFormat ('m/d/YH: iA', ' 29.05.2013 0: 00: PM '); echo $ d-> format ("Y-m-d H: i: s"); '** Great Thing ** –

0

Этот экстракт из PHP руководства может иметь отношение:

"Даты в м/д/г или DMY форматы многозначной, глядя на разделитель между различными компонентами: если сепаратор является слэш (/), а затем американский м/д/г предполагается;., тогда как, если разделитель тире (-) или точка(), то европейский формат ДМГ предполагается "

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

.
1

Время «00: 00PM» искажено; как задокументировано, час hh с меридианом имеет формат "0"?[1-9] | "1"[0-2], i. е. не ноль, а от одного до двенадцати.