0

機能していたスクリプトがありますが、うまく機能していますが、適切ではありません。この関数は、2 つの日付/時刻の時差を計算することを想定しています。

最初の日付は現在の日付と時刻 (日付 + 時間:分) で、2 番目の日付はユーザーが選択します。

目的は、現在の日付/時刻がユーザーが選択した日付から 24 時間以内の場合にエラーを表示することです。つまり、今日が 23/20/2012 16:00 で、ユーザーが 24/10/2012 15:00 を選択した場合 (これは 24 時間以内を意味します)、ユーザーが 26/10/2012 19:00 を選択した場合は、24 時間経過しています。

これで問題なく動作しますが、日付が年を変更すると(ユーザーが2012年12月31日以降の日付を選択した場合..24時間以内にまだあると想定されます..そして、これがどのように起こるか非常に困惑しています..間違った?

    $dt = $_GET['dt']; $tm = $_GET['tm']; 

    // Current Date an time (Hrs & Mins)
$date1 = date("Y-m-d H:i");

    // Chosen Date/Time

$date2 = date("Y-m-d", strtotime( "$dt" ) );
$diff = strtotime($date2." $tm") + - strtotime($date1);
if($diff/3600 < 24)
    echo "0";
else
    echo "1";

以下は、呼び出しを行う対応する Ajax です。

function getAjaxTime()
{

xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  } 
dt = document.frm.arrival_date.value;
tm = document.frm.arrival_hour.value +':'+document.frm.arrival_min.value;
xmlHttp.open("GET","<?php echo $base_dir;?>/admin/get/timediff.php?dt="+encodeURI(dt)+"&tm="+encodeURI(tm),false);
xmlHttp.send(null);
return xmlHttp.responseText; 
}
4

2 に答える 2

0

私はこのようなことを試してみます:

function isDateWithin24Hours($targetDate, $currentDate = 'now') {   
    $targetDate = new DateTime($targetDate);
    $currentDate = new DateTime($currentDate);
    $interval = $targetDate->diff($currentDate);
    //%a = total number of days
    if ($interval->format('%a') > 1) {
        return (int) false;
    }

    return (int) true;
}

echo isDateWithin24Hours('2012-10-24 19:00:00');

echo isDateWithin24Hours('2012-10-24 19:00:00', '2012-10-23 18:00:00');
于 2012-10-23T18:29:31.540 に答える
0

PHPマニュアルによると - http://us3.php.net/manual/en/datetime.formats.date.php - あなたの日付は有効な形式ではありません:

24/10/2013   // with / as deliminators

これらは有効です

24-10-2013   // with - as deliminators
10/24/2013   // with / as deliminators and as m/d/Y

アップデート-

また、次の形式はstrtotime& date-では無効です。

Thursday, 10 May, 2012 00:30

しかし、これは有効です-

Thursday, May 10, 2012 00:30

アップデート #2

実際$_GET['dt']、有効なphp形式になったら、コードを次のように単純化できます-

$dt = $_GET['dt']; $tm = $_GET['tm']; 

// Current Date an time (Hrs & Mins)
$date1 = date("Y-m-d H:i");

$diff = strtotime($dt." ".$tm) + - strtotime($date1);
if($diff/3600 < 24)
  echo "0";
  else
  echo "1";
于 2012-10-23T18:30:09.007 に答える