phpとMySqlで時間差を計算する方法

3935 ワード

最近では、自分の襟巻きを研究するときに恋愛日数を計算する必要があります.phpは毎日の日付に基づいて計算する必要があります.次に、このような日付計算を実現する方法についてお話しします.
(1)データベースがあれば簡単!MSSQLならトリガが使えます!日付差を専門に計算する関数datediff()でOK!MYSQLの場合は、2つの日付フィールドの差で計算した計算結果を別の数値フィールドに保存します.使用時に呼び出せばいい!
(2)データベースがなければphpの時間日付関数を完全に使わなければならない!
次に主に説明します.例:1998年5月3日から1999-6-5までの日数を計算します.
 
  
$startdate=mktime("0","0","0","5","3","1998"); $enddate=mktime("0","0","0","6","5","1999"); // 1970-1-1 .
$days=round(($enddate-$startdate)/3600/24) ;
echo $days;

$daysは得られた日数です.mktime()のパラメータがデフォルトの場合、現在の日付が使用されていることを示します.これにより、借入日から現在までの日数を計算できます.
最後にSQLの計算方法を説明します.
DateDiff関数
説明:2つの日付の間隔を返します.
構文:
 
  
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear>)

interval:必須です.データ1とデータ2の間の時間間隔を計算する文字列式.数値については、「設定」セクションを参照してください.
date 1,date 2:必須です.日付式.計算に使用される2つの日付.
firstdayofweek:オプション.曜日の初日の定数を指定します.指定されていない場合、デフォルトは日曜日です.数値については、「設定」セクションを参照してください.
firstweekofyear:オプション.1年の最初の週の定数を指定します.指定されていない場合は、デフォルトは1月1日の曜日です.数値については、「設定」セクションを参照してください.
intervalパラメータには、次の値があります.
yyyy(年)、q(四半期)、m(月)、y(年の日数)、d(日)、w(週の日数)、ww(週)、h(時間)、n(分)、s(秒)
firstdayofweekパラメータには、次の値があります.
(以下、定数値の説明)
vbUseSystem 0は、地域言語サポート(NLS)API設定を使用します.
vbSunday 1日曜日(デフォルト)
vbMonday 2月曜日
vbTuesday 3星期二
vbWednesday 4星期3
vbThursday 5木曜日
vbFriday 6金曜日
vbSaturday 7星期六
firstweekofyearパラメータには、次の値があります.
(以下、定数値の説明)
vbUseSystem 0は、地域言語サポート(NLS)API設定を使用します.
vbFirstJan 1は、1月1日の曜日から始まります(デフォルト).
vbFirstFourDays 2は、新年の少なくとも4日間の最初の週から始まります.
vbFirstFullWeek 3は、新しい年の最初の完全な週から始まります.
説明:DateDiff関数は、2つの日付の間に存在する指定の間隔の数を判断するために使用されます.たとえば、DateDiffを使用して、2つの日付が異なる日数、またはその日からその年の最後の日までの曜日を計算できます.
date 1とdate 2の差の日数を計算するには、「1年の日数」(y)または「日」(d)を使用します.Intervalが「週の日数」(「w」)である場合、DateDiffは2つの日付の間の曜日を返します.date 1が月曜日の場合、DateDiffはdate 2の前の月曜日の数を計算します.この結果にはdate 1ではなくdate 2が含まれます.Intervalが「週」(「ww」)の場合、DateDiff関数はカレンダ・テーブルの2つの日付の間の曜日を返します.関数は、date 1とdate 2の間の日曜日の数を計算します.date 2が日曜日の場合、DateDiffはdate 2を計算しますが、date 1が日曜日であってもdate 1は計算されません.
date 1がdate 2より遅い場合、DateDiff関数は負の数を返します.
firstdayofweekパラメータは、「w」と「ww」の間隔記号を使用した計算に影響します.
date 1またはdate 2が日付文字の場合、指定した年度は日付の固定部分になります.ただし、date 1またはdate 2が引用符(""""")に含まれ、年が省略されている場合、date 1またはdate 2式が計算されるたびに、現在の年が挿入されます.これにより、異なる年に適用されるプログラムコードを記述できます.
Intervalが「年」(「yyyyy」)の場合、12月31日と来年の1月1日を比較し、実際には1日しか差がないが、DateDiffは1を返して1年差を示す.
DatePart関数
説明:指定した日付の指定部分を返します.
構文:

   DatePart(interval, date[, firstdayofweek[, firstweekofyear>) 
 

DatePart:関数の構文には次のパラメータがあります.
interval:必須です.文字列式は、返す間隔を表します.数値については、「設定」セクションを参照してください.
date:必須です.計算する日付式.
firstdayof week:オプション.曜日の初日の定数を指定します.指定しない場合は日曜日がデフォルトです.数値については、「設定」セクションを参照してください.
firstweekofyear:オプション.1年の最初の週の定数を指定します.指定しない場合は、デフォルトでは1月1日の週です.数値については、「設定」セクションを参照してください.
intervalパラメータには、次の値があります.
yyyy(年)、q(四半期)、m(月)、y(年の日数)、d(日)、w(週の日数)、ww(週)、h(時間)、n(分)、s(秒)
firstdayofweekパラメータには、次の値があります.
(以下、定数値の説明)
vbUseSystem 0は、地域言語サポート(NLS)API設定を使用します.
vbSunday 1日曜日(デフォルト)
vbMonday 2月曜日
vbTuesday 3星期二
vbWednesday 4星期3
vbThursday 5木曜日
vbFriday 6金曜日
vbSaturday 7星期六
firstweekofyearパラメータには、次の値があります.
(以下、定数値の説明)
vbUseSystem 0は、地域言語サポート(NLS)API設定を使用します.
vbFirstJan 1は、1月1日の曜日から始まります(デフォルト).
vbFirstFourDays 2は、新年の少なくとも4日間の最初の週から始まります.
vbFirstFullWeek 3は、新しい年の最初の完全な週(年度を超えない)から始まります.
説明:DatePart関数は、日付を計算し、指定した間隔を返します.たとえば、DatePartを使用して曜日または現在の時刻を計算します.
firstdayofweekパラメータは、「w」と「ww」の間隔記号を使用する計算に影響します.
dateが日付文字の場合、指定した年度は日付の固定部分となります.ただし、dateが引用符(""""")に含まれ、年が省略されている場合は、コードでdate式が計算されるたびに現在の年が挿入されます.これにより、異なる年に適用されるプログラムコードを作成できます.