ホームページ >バックエンド開発 >PHPチュートリアル >phpとMySqlで時差を計算する方法を詳しく解説、mysql時差_PHPチュートリアル

phpとMySqlで時差を計算する方法を詳しく解説、mysql時差_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:00:13835ブラウズ

PHPとMySql、MySQLの時差計算方法を詳しく解説

PHPでの時差計算は面倒なこともありますが、日付と時刻関数の使い方をマスターすれば大丈夫です!シンプルになる。

最近、私は愛のスカーフを研究していたときに、PHP で毎日の日付に基づいて計算する必要がありました。この日付の計算を実現するためのいくつかの方法について説明します。

(1) データベースがあれば簡単!MSSQLなら日付の差分を計算する関数datediff()を使うだけ!計算結果を計算して保存するための 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) ;
エコー $days;


$days は取得された日数です。

mktime() のパラメータがデフォルトの場合は、現在の日付を使用することを意味し、本を借りた日からの日数を計算できます。

最後に、SQL の計算方法について説明します。

DateDiff関数

説明: 2 つの日付間の時間間隔を返します。

文法:

DateDiff(interval, date1, date2 [, firstdayofweek[, firstweekofyear>])

間隔: 必須。 date1 と date2 の間の時間間隔を計算するために使用される文字列式。値については、「設定」セクションを参照してください。


日付1、日付2: 必須。日付式。計算に使用される 2 つの日付。

週の最初の日: オプション。週の最初の曜日を指定する定数。指定しない場合は、デフォルトで日曜日が設定されます。値については、「設定」セクションを参照してください。

年の最初の週: オプション。年の最初の週を指定する定数。指定しない場合、デフォルトで 1 月 1 日の週が設定されます。値については、「設定」セクションを参照してください。

interval パラメーターには次の値を指定できます:

yyyy (年)

q(クォーター)

m(月)
y (一年の日数)
d(日)
w(曜日)
ww(週)
h(時間)
n(分)
s(秒)
firstdayofweek パラメータには次の値を指定できます:

(以下は定数値の説明です)

vbUseSystem 0 ロケール言語サポート (NLS) API 設定を使用します。

vbSunday 1 日曜日 (デフォルト)

vb月曜日2月曜日
vb火曜日3
vb水曜日 4 水曜日
vb木曜日5木
vb金曜日6
vb土曜日 7
firstweekofyear パラメーターには次の値を指定できます:

(以下は定数値の説明です)

vbUseSystem 0 ロケール言語サポート (NLS) API 設定を使用します。

vbFirstJan1 1 1 月 1 日の週から開始します (デフォルト)。

vbFirstFourDays 2 は、少なくとも 4 日ある新年の最初の週から始まります。
vbFirstFullWeek 3 は、新年の最初の丸一週間から始まります。
説明: DateDiff 関数は、2 つの日付の間に存在する指定された時間間隔の数を決定するために使用されます。

たとえば、DateDiff を使用して、2 つの日付の間の日数、または今日と年の最後の日の間の週数を計算できます。

date1 と date2 の間の日数を計算するには、「年間日数」(「y」) または「日」(「d」) を使用できます。間隔が「曜日」(「w」) の場合、DateDiff は 2 つの日付の間の週数を返します。

date1 が月曜日の場合、DateDiff は date2 までの月曜日の数を計算します。この結果には date2 は含まれますが、date1 は含まれません。

間隔が「週」(「ww」) の場合、DateDiff 関数はカレンダー テーブル内の 2 つの日付の間の週数を返します。関数は、date1 と date2 の間の日曜日の数をカウントします。

DateDiff は、date2 が日曜日の場合は date2 を計算しますが、date1 が日曜日の場合でも date1 は計算しません。

date1 が date2 より後の場合、DateDiff 関数は負の数を返します。 firstdayofweek 引数は、「w」および「ww」区切り記号を使用した計算に影響します。

date1 または date2 が日付リテラルの場合、指定された年は日付の固定部分になります。ただし、date1 または date2 を引用符 (" ") で囲み、年を省略した場合、コード内で date1 または date2 式が評価されるたびに現在の年が挿入されます。これにより、異なる年にわたって機能するプログラム コードを作成することが可能になります。

間隔が「年」(「yyyy」) の場合、12 月 31 日と翌年の 1 月 1 日を比較します。実際にはその差は 1 日だけですが、DateDiff は 1 年の差を示す 1 を返します。

DatePart関数

説明: 指定された日付の指定された部分を返します。 文法:

DatePart(間隔, 日付[, 週の最初の日[, 年の最初の週>])
DatePart: 関数の構文には次のパラメータがあります:
間隔: 必須。返される時間間隔を表す文字列式。値については、「設定」セクションを参照してください。
日付が必要。評価する日付式。
firstdayofweek: オプション。週の最初の曜日を指定する定数。指定しない場合、デフォルトで日曜日が設定されます。値については、「設定」セクションを参照してください。
firstweekofyear: オプション。年の最初の週を指定する定数。指定しない場合、デフォルトで 1 月 1 日の週が設定されます。値については、「設定」セクションを参照してください。
間隔パラメータには次の値を指定できます: yyyy (年)、q (四半期)、m (月)、y (年間の日数)、d (日)、w (週の日数)、ww (週)、h (時間)、n (分)、s (秒)

firstdayofweek パラメータには次の値を指定できます:

(以下は定数値の説明です)

vbUseSystem 0 ロケール言語サポート (NLS) API 設定を使用します。
vbSunday 1 日曜日 (デフォルト)
vb月曜日2月曜日
vb火曜日3
vb水曜日 4 水曜日
vb木曜日5木
vb金曜日6
vb土曜日 7
firstweekofyear パラメーターには次の値を指定できます:

(以下は定数値の説明です)

vbUseSystem 0 ロケール言語サポート (NLS) API 設定を使用します。
vbFirstJan1 1 1 月 1 日の週から開始します (デフォルト)。
vbFirstFourDays 2 は、少なくとも 4 日ある新年の最初の週から始まります。
vbFirstFullWeek 3 は、新年の最初の丸一週間から始まります (年をまたいでではありません)。
説明: DatePart 関数は、日付を計算し、指定された時間間隔を返すために使用されます。たとえば、DatePart を使用して曜日や現在時刻を計算します。

firstdayofweek パラメーターは、「w」および「ww」間隔記号を使用した計算に影響します。

date が日付リテラルの場合、指定された年は日付の固定部分になります。ただし、日付を引用符 (" ") で囲み、年を省略した場合は、コード内で日付式が評価されるたびに現在の年が挿入されます。このようにして、さまざまな年にわたって機能するプログラム コードを作成できます。

以上がこの記事の全内容です。phpを習得する皆さんのお役に立てれば幸いです。

この記事を友達と共有したり、コメントを残してください。皆様のご支援に心より感謝申し上げます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/974656.html技術記事 PHPとMySQLで時差を計算する方法を詳しく解説 PHPで時差を計算するのは面倒なこともありますが、日付と時刻の関数の使い方をマスターすれば大丈夫です!
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。