8

私はphpが初めてです。そして、php での日付操作のいくつかを知りたいです。

// Get Current date
$date = date("Y-m-d");

現在の日付と特定の日付を減算したい場合は、「今日 - 2008-06-26」としましょう。

  1. PHPで日付演算操作(加算、マイナス、乗算など)を行うには?

  2. 今日、購読者が 2009 年 6 月 26 日の日付で購読している場合、1 週間後にデータベースから彼のアカウントを削除したいのですが、どうすればよいですか? (私はmysqlを使用しています)

  3. ユーザーの日付をデータベースに保存すると何ができるでしょうか? たとえば、ユーザーの誕生日の日付を保存できるので、彼の誕生日にメールを送信しました。他にデートできることは??

4

2 に答える 2

13

まず、date()time()、およびの違いを理解する必要がありmktime()ます。

date()表示目的のみに使用されます。数学的な操作には絶対に使用しないでください。

time()timestampcurrent (int現在の時刻と日付を表す ) を返します。

mktime()パラメータなしの は、 と同じtime()です。パラメータを使用するとtimestamp、設定した時間の を取得できます。パラメータは、時間、分、秒、月、日、年の順序です。

さて、あなたの質問

質問1

時間操作を行うには、次の操作を実行できます。

$today = mktime(0,0,0); //Today, time neutral
$otherDate = mktime(0, 0, 0, 6, 26, 2008); //2008-06-26, time neutral

$secondsBetweenDates = $today - $otherDate;

質問2

そのようなことを SQL で直接行う方がよいでしょう。PHP で実行されている最も一般的な 2 つのデータベース サーバーで実行できる方法を次に示します。DateSubscribed有効な日付データ型であると想定しています。

--- MySQL
DELETE FROM `subscribers`
    WHERE NOW() < DATE_ADD(`DateSubscribed`, INTERVAL 1 WEEKS);

--- PostgreSQL
DELETE FROM "subscribers"
    WHERE CURRENT_TIMESTAMP < ("DateSubscribed" + interval '1 week');

質問 3

これは、DBMS によって異なります。MySQL と PostgreSQL の両方の日付/時刻関数に関連するドキュメント ページは次のとおりです。

于 2009-06-26T05:01:44.020 に答える
3

Q1:まず、日付をタイムスタンプに変換します。次に、タイムスタンプを使用して計算を行い、それらを日付に戻すことができます。例えば:

$num_seconds_between = strtotime('today') - strtotime('2008-06-26');
$num_days_between = $num_seconds_between / 60 / 60 / 24;

Q2:彼のアカウントを削除する日付を見つけるには(データベースの「日付/時刻」形式で):

date('Y-m-d H:i:s', strtotime('+1 week', strtotime('2009-06-26')));

その後、任意の方法で削除できます。cronジョブを使用することをお勧めします。

Q3:必要なことはほとんど何でもできます。他の能力について具体的な質問がある場合は、ここに投稿してください。詳細については、 PHPのマニュアルを確認してください。

于 2009-06-26T04:54:02.550 に答える