SORU
26 Mart 2010, Cuma


Dize bir unix zaman damgası olup olmadığını kontrol edin

Bir dize ve bir unix zaman damgası olup olmadığını öğrenmek istiyorum ya da değil, bunu nasıl etkin yapabilirim?

Google üzerinden this thread buldum, ama çok sağlam bir cevap değil maalesef. (Ve evet, bahsi geçen konu üzerine Gönderen, bu soruyu ben cribbed).

CEVAP
26 Mart 2010, Cuma


Tamam, bir süre için bu işe yaramaz sonra, date('U') ve Öner ile çözüm bu bir yerine kullanmak çekilme:

function isValidTimeStamp($timestamp)
{
    return ((string) (int) $timestamp === $timestamp) 
        && ($timestamp <= PHP_INT_MAX)
        && ($timestamp >= ~PHP_INT_MAX);
}

Bu onay yalnızca $timestamp verilen ise true döndürürstringve basamak ve isteğe bağlı eksi bir karakter sadece oluşur. Bu sayı aynı zamanda bir tam sayı bit aralığında olmalı (EDİT: actually unneeded as shown here).

var_dump( isValidTimeStamp(1)             ); // false
var_dump( isValidTimeStamp('1')           ); // TRUE
var_dump( isValidTimeStamp('1.0')         ); // false
var_dump( isValidTimeStamp('1.1')         ); // false
var_dump( isValidTimeStamp('0xFF')        ); // false
var_dump( isValidTimeStamp('0123')        ); // false
var_dump( isValidTimeStamp('01090')       ); // false
var_dump( isValidTimeStamp('-1000000')    ); // TRUE
var_dump( isValidTimeStamp(' 1000000')    ); // false
var_dump( isValidTimeStamp('2147483648')  ); // false
var_dump( isValidTimeStamp('-2147483649') ); // false

PHP_İNT_MAX için kontrol dizesi doğru date ve seviyor tarafından kullanılabilir, örneğin sağlar bu* olmayacağından emin olmak için

echo date('Y-m-d', '2147483648');  // 1901-12-13
echo date('Y-m-d', '-2147483649'); // 2038-01-19

Daha tamsayı tabii ki 64 bit sistemler daha büyük ve işlevi artık döndürür false "2147483648" ve "-2147483649" ancak ilgili için daha büyük bir sayı.


(*)Not: tarih yine de ne bit aralığına karşılık 0 emin değilim

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010
  • PhoneArena

    PhoneArena

    7 NİSAN 2006