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

  • Barnacules Nerdgasm

    Barnacules N

    20 Temmuz 2006
  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012