Php, tarih işleme?

2 Cevap php

Ben php yeni duyuyorum. Ve ben php tarih manipülasyon bazı şeyleri bilmek istiyorum.

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

Ben Geçerli tarihi ve belirli bir tarih çıkarmak istiyorsanız ne varsa, "- 2008-06-26 bugün" Diyelim ki?

S1: php tarih matematik manipülasyon (eklemek, eksi, multply vb) nasıl yapılır?

S2: Eğer bugün, bir abone 2009-06-26, 1 hafta sonra ben bunu nasıl yapabilirim, benim veritabanından onun hesabını silmek istiyorum bugün tarihte abonedir? (Ben mysql kullanıyorum)

S3: bizim veritabanında kullanıcının tarihini saklamak, biz ne yapabiliriz? Örneğin, kullanıcının bday tarihini saklayabilirsiniz, böylece zaman onun bday gününde, biz ona bazı e-posta gönderdi. Tarih başka ne yapabilirim?

2 Cevap

Her şeyden önce, size date() , time() , and mktime() arasındaki farkı anlamak gerekir.

date() yalnızca görüntüleme amacıyla kullanılır. Matematiksel manipülasyon için kesinlikle kullanmayın.

time() returns the current timestamp (bir int şimdiki zaman ve tarihi temsil eden).

mktime() , without any parameters, is the same as time() . With parameters, it allows you to get a timestamp, belirli bir süre için. Parametreleri bu sırayla şunlardır: Saat, dakika, saniye, ay, gün, yıl.

Şimdi, your questions:

Question 1

Zaman manipülasyon yapmak için, aşağıdakileri yapabilirsiniz:

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

$secondsBetweenDates = $today - $otherDate;

Question 2

Eğer SQL, doğrudan böyle bir şey yaptığını daha iyi. Burada PHP çalışan en yaygın iki veritabanı sunucuları için yapabileceğiniz yolu vardır. I DateSubscribed geçerli bir tarih veri türü olduğunu varsayarak yaşıyorum.

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

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

Question 3

Bu sizin DBMS bağlıdır. Burada MySQL ve PostgreSQL ikisi için Tarih / Saat İşlevleri ile ilgili belgeler sayfaları

S1: Birincisi, zaman damgaları için tarih dönüştürmek. Daha sonra damgaları ile matematik ve tarih onları geri dönüştürebilirsiniz. Örneğin:

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

S2: onun hesabını (veritabanında "tarih / saat" formatında) silmek için tarihini öğrenmek için:

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

Daha sonra herhangi bir şekilde silebilirsiniz. Bir cron job kullanmak isteyebilirsiniz gibi geliyor.

S3: bunu yapmak için gereken hemen hemen her şey. Eğer diğer yetenekleri üzerinde özel sorularınız varsa, onları burada yayınlamak. Sen PHP manual daha fazla kontrol edebilirsiniz.