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

  • Bucky Roberts

    Bucky Robert

    9 HAZİRAN 2011
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009