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

  • infodirt

    infodirt

    11 Mart 2009
  • kidrauhl

    kidrauhl

    15 Ocak 2007
  • Top Gear

    Top Gear

    27 Mart 2006