Gg / aa / yyyy tarih biçimini doğrulamak için normal ifade


172

dd/mm/yyyyDüzenli bir ifade ile biçim için bir tarih dizesini doğrulamak gerekiyor .

Bu normal ifade doğrulanır dd/mm/yyyy, ancak şu geçersiz tarihler geçerli değildir 31/02/4500:

^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$

dd/mm/yyyyArtık yıl desteğiyle biçimi doğrulamak için geçerli bir normal ifade nedir ?


3
Bence bu normal ifade artık yılları doğru olarak doğrulamıyorsa, doğru bir beklenti belirlemeniz size yardımcı olabilir; ör. 29 Şubat 2013'te yoktur, ancak bu normal ifade bunun geçerli olduğunu iddia eder: regexr.com?346fp
TML

7
Neden Regex ile? Daha kolay (ve daha doğru) yollar var ...
Dan Puzey

2
Normal ifadeler, sayısal değerleri denetlememek yerine eşleşen kalıplar içindir. Normal ifade ile olası bir dize bulun ve ardından ana diliniz ne olursa olsun (PHP, ne olursa olsun) sayısal değerini kontrol edin.
Andy Lester

3
Bu yanıt, "Ortak Doğrulama Görevleri" altında Yığın Taşması Düzenli İfade SSS'ye eklendi .
aliteralmind

4
@BurhanKhalid: Yanılıyorsunuz. Düzenli ifade, doğrulama için en iyi araçtır, çünkü HTML5 girdisi patternnormal bir ifade alan bir özniteliğe sahiptir ve tarayıcılar herhangi bir javascript kullanmadan otomatik olarak normal ifadeye göre doğrular. Sadece desen özelliğine bir normal ifade yerleştirerek!
awe

Yanıtlar:


329

Yapıştırdığınız normal ifade artık yılları doğru bir şekilde doğrulamıyor, ancak aynı gönderide geçerli olan bir ifade var . Ben almaya modifiye dd/mm/yyyy, dd-mm-yyyyya dd.mm.yyyy.

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Arun'un cevabında ve burada da verdiği bağlantıda biraz test ettim ve işe yarıyor gibi görünüyor.

14 Şubat 2019'u düzenleyin: Normal ifadelere dahil olan ve aşağıdaki gibi tarihlere izin veren bir virgül kaldırdım 29-0,-11


9
Destansı regex! Bu, formata göre ne kadar kolay değiştirilebilir? Örneğin yyyy-aa-gg ve aa-gg-yyyy. Bunu akılda tutarak anladım, ama normal ifade becerilerimin ötesinde.
mrswadge

7
Bunun dışında DD/MM/YYYY, bu normal ifade de DD/MM/YYposterin ilk niyetinde olduğundan emin olmadığımı kabul ediyor . 'YY'yi desteklemek istemiyorsanız, isteğe bağlı tüm ?nicelik belirteçleri kaldırın .
user1485864

2
Her yerine @PurveshDesai 0?ile 0, ve aynı zamanda en son geçtiği çıkarın ?.
Ofir Luzon

4
@MaraisRossouw, 4 haneli bir yıl için, 3 aslında var, doğru ?yerini tüm: kaldırılması gerektiğini (?:1[6-9]|[2-9]\d)?ile (?:1[6-9]|[2-9]\d).
Ofir Luzon

2
Sadece bunu söylemek için bırakarak: WOW ve elbette teşekkür ederim
Jero Dungog

266

@Ofir Luzon tarafından dd-mmm-YYYY, dd / mmm / YYYY, dd.mmm.YYYY formatları için gereksinimime göre verilen normal ifadeyi uzattım. Aynı gereksinime sahip olan herkes buna başvurabilir

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)(?:0?2|(?:Feb))\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

ve burada bazı test durumları için test edilmiştir http://regexr.com/39tr1 .

Bu Normal ifadeyi daha iyi anlamak için şu resme bakın: resim açıklamasını buraya girin


1
Evet, nasıl ürettin? :)
Ustura

Bazı web sitelerini kullanarak çevrimiçi olarak oluşturdum ve şimdi de bu resmi oluşturduğum web sitesini hatırlamıyorum. Hatırladığımda referansı ekleyeceğim :)
Alok Chaudhary

4
@ user3733831 8888olası bir yıl. Bu yaşta yaşamayı umuyorum.
Dan Nissenbaum

1
Artık yıllar için bile harika çalışıyor. Kısa İspanyol ay isimleri için de destek ekledim.
Fer R

2
@AlokChaudhary, diyagram debuggex.com
Taha BASRI

69

Farkına varmak:

Normal ifadeniz "4 ve 100'ün katlarıdır, ancak 400 değil" yıllardır çalışmaz. Bu sınavı geçen yıllar artık yıllar değildir. Örneğin: 1900, 2100, 2200, 2300, 2500, vs. - MuchToLearn

Bu yüzden sadece [1901-2099] (Vay canına) 😊 için düzgün çalışıyor

gg / AA / yyyy:

Artık yıl olup olmadığını kontrol eder. 1900 - 9999 yılları geçerlidir. Yalnızca gg / AA / yyyy

(^(((0[1-9]|1[0-9]|2[0-8])[\/](0[1-9]|1[012]))|((29|30|31)[\/](0[13578]|1[02]))|((29|30)[\/](0[4,6,9]|11)))[\/](19|[2-9][0-9])\d\d$)|(^29[\/]02[\/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)

7
Bu cevap yalnızca gg / aa / yyyy ile çalışır . Bu nedenle, doğru cevap budur.
Rodrigo

2
@SylvainB Sabitledim
gdZeus

2
@gdZeus İki yıl sonra bile yayınladığınız için teşekkürler! Eksik bir çözümün uzun zamandır buralarda doğrulandığını düşünmek korkutucu.
SylvainB

Daha hızlı yapmak için grupların gruplandırılmamasını sağlayabilirsiniz. regexr.com/3esom ^ (? :(? :(? :( ?: 0 [1-9] | 1 [0-9] | 2 [0-8]) [\ /] (?: 0 [1- 9] | 1 [012])) | (:( ?: 29 |? 30 | 31) [\ /] (?: 0 [13.578] | 1 [02])) | (:( ?: 29 |? 30 ) [\ /] (?: 0 [4,6,9] | 11))) [\ /] (?: 19 | [2-9] [0-9]) \ d \ d) | (?: 29 [\ /] 02 [\ /] (?: 19 | [2-9] [0-9]) (?: 00 | 04 | 08 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | 96)) $
Matt Vukomanovic

Sanırım bir hata buldum: 29/02/2100mevcut değil (2100 artık yıl değil), ancak yine de verilen desen tarafından kabul ediliyor.
KnorxThieus


12

Kullanıcının yerel ayarının Julian'dan Gregoryen takvimlerine ne zaman geçtiğini bilmeden aşağıdakilerin beklendiği kadar doğru olduğundan şüpheleniyorum.

Sipariş ne olursa olsun yıl, ay ve gün arasında ayırıcı olarak '-', '/' ya da hiçbir şeyi kabul etmez.

AAGGYYYY:

^(((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]|1[0-9]|2[0-8]))[-/]?[0-9]{4}|02[-/]?29[-/]?([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$

GGAAYYYY:

^(((0[1-9]|[12][0-9]|30)[-/]?(0[13-9]|1[012])|31[-/]?(0[13578]|1[02])|(0[1-9]|1[0-9]|2[0-8])[-/]?02)[-/]?[0-9]{4}|29[-/]?02[-/]?([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00))$

yyyyAAgg:

^([0-9]{4}[-/]?((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]|1[0-9]|2[0-8]))|([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048]|0[0-9]|1[0-6])00)[-/]?02[-/]?29)$

Sipariş dışında, bunların hepsi Gregoryen Takvimi'nin Julian'dan ayrıldığı 1700'e kadar Julian Takvimi (artık dört yılda bir). İki sorunu var:

  1. Tümünde olmasa da pek çok standartta mevcut olmayan 0000 yılını kabul eder. ISO 8601'in 0000 yılını kabul ettiğini unutmayın (1 BCE'ye eşdeğer).
  2. Gregoryen Takvimi kullanıma girdiğinde kaybolan 10-13 günü atlamaz. Bu yine de bölgeye göre değişir. Örneğin, Roma Katolik Kilisesi 5 gün, 5 Ekim - 14 Ekim 1582 arasında atladı, ancak Yunanistan (son geçiş), 1600 ile 1923 arasında, 13 gün, 1700'ün artık yıllarını hesaba katmak zorunda kaldı. 1800 ve 1900.

Bu, Java'nın 0001 yılından 9999 yılına kadar takvim uygulamasına karşı test edilmiştir; tek fark 1582'de yukarıda belirtilen 10 gündür.


YYYYMMDD normal ifadesi yanlış bir şekilde [01 | 02 | 03 | 05 | 06 | 07 | 09 | 10 | 11 | 13 | 14 | 15] 00-02-29 ile eşleşiyor. Düzeltilmiş regex: ^([0-9]{4}[-/]?((0[13-9]|1[012])[-/]?(0[1-9]|[12][0-9]|30)|(0[13578]|1[02])[-/]?31|02[-/]?(0[1-9]|1[0-9]|2[0-8]))|([0-9]{2}(([2468][048]|[02468][48])|[13579][26])|([13579][26]|[02468][048])00)[-/]?02[-/]?29)$. Python ile test edildi: repl.it/repls/DependentBestChapters
kpr

10

Bunlara bakıp tamamen karışanlar için, senaryomdan bir alıntı. Ne yazık ki, tek yaptığı bir tarih zaman girişindeki geçerli sayılarla eşleşmektir ve 31 Şubat geçerli olarak işaretlenecektir, ancak birçoklarının söylediği gibi, regex gerçekten bu testi yapmak için en iyi araç değildir.

'Yyyy-AA-gg ss: dd' biçimindeki bir tarihi eşleştirmek için (Ya da lütfen istediğiniz sırayla)

var dateerrors = false;
var yearReg = '(201[4-9]|202[0-9])';            ///< Allows a number between 2014 and 2029
var monthReg = '(0[1-9]|1[0-2])';               ///< Allows a number between 00 and 12
var dayReg = '(0[1-9]|1[0-9]|2[0-9]|3[0-1])';   ///< Allows a number between 00 and 31
var hourReg = '([0-1][0-9]|2[0-3])';            ///< Allows a number between 00 and 24
var minReg = '([0-5][0-9])';                    ///< Allows a number between 00 and 59
var reg = new RegExp('^' + yearReg + '-' + monthReg + '-' + dayReg + ' ' + hourReg + ':' + minReg + '$', 'g');
$('input').filter(function () {return this.id.match(/myhtml_element_with_id_\d+_datetime/);}).each(function (e) {
    if (e > 0) {
        // Don't test the first input. This will use the default
        var val = $(this).val();
        if (val && !val.trim().match(reg)) {
            dateerrors = true;
            return false;
        }
    }
});
if (dateerrors) {
    alert('You must enter a validate date in the format "yyyy-mm-dd HH:MM", e.g. 2019-12-31 19:30');
    return false;
}

Yukarıdaki komut dosyası bir regex nesnesi oluşturarak başlar. Daha sonra kimliği belirli bir kalıpla eşleşen tüm girişleri bulur ve sonra bunlardan geçer. Bulduğum ilk girişi ( if (e > 0)) test etmiyorum .

Biraz açıklama:

var reg = new RegExp('^' + yearReg + '-' + monthReg + '-' + dayReg + ' ' + hourReg + ':' + minReg + '$', 'g');

^maçın başlangıcı anlamına gelirken $, maçın sonu anlamına gelir.

return this.id.match(/myhtml_element_with_id_\d+_datetime/);

\d+aracı, bir tek ya da bir tamsayı bitişik sekans neticesinde, bu myhtml_element_with_id_56_datetimeve myhtml_element_with_id_2_datetimeneticesinde, ancak myhtml_element_with_id_5a_datetimeolmaz


8

Aşağıda, aşağıdaki tarih biçimlerinden herhangi biriyle eşleşecek ve baştaki sıfırların atlanmasına izin verecek başka bir normal ifade sürümü:

regex: ^[0-3]?[0-9].[0-3]?[0-9].(?:[0-9]{2})?[0-9]{2}$

Maçlar:

1/1/11 or 1.1.11 or 1-1-11 : true 01/01/11 or 01.01.11 or 01-01-11 : true 01/01/2011 or 01.01.2011 or 01-01-2011 : true 01/1/2011 or 01.1.2011 or 01-1-2011 : true 1/11/2011 or 1.11.2011 or 1-11-2011 : true 1/11/11 or 1.11.11 or 1-11-11 : true 11/1/11 or 11.1.11 or 11-1-11 : true

Düzenli ifade görselleştirme

Debuggex Demosu


4
Eğer varsa does not iş 13/13/2000= Maçlar olduğu doğrudur
Andrei Krasutski

3
39/39/39 bir tarih değil. Lütfen bu cevap için oy vermeyi durdurun.
Warren Sergent

6

Burada dd/mm/yyyyayırıcının -.,/yıl aralığı olabileceği bir tane yazdım 0000-9999.

Artık yıllar ile ilgilenir ve gözetleme, yakalama grupları ve geri başvuruları destekleyen regex lezzetleri için tasarlanmıştır . Gibi için geçerli DEĞİLDİR d/m/yyyy. Gerekirse başka ayırıcılar ekleyin[-.,/]

^(?=\d{2}([-.,\/])\d{2}\1\d{4}$)(?:0[1-9]|1\d|[2][0-8]|29(?!.02.(?!(?!(?:[02468][1-35-79]|[13579][0-13-57-9])00)\d{2}(?:[02468][048]|[13579][26])))|30(?!.02)|31(?=.(?:0[13578]|10|12))).(?:0[1-9]|1[012]).\d{4}$

Regex101'de test edin ; Java dizesi olarak:

"^(?=\\d{2}([-.,\\/])\\d{2}\\1\\d{4}$)(?:0[1-9]|1\\d|[2][0-8]|29(?!.02.(?!(?!(?:[02468][1-35-79]|[13579][0-13-57-9])00)\\d{2}(?:[02468][048]|[13579][26])))|30(?!.02)|31(?=.(?:0[13578]|10|12))).(?:0[1-9]|1[012]).\\d{4}$"

açıkladı:

(?x) # modifier x: free spacing mode (for comments)
     # verify date dd/mm/yyyy; possible separators: -.,/
     # valid year range: 0000-9999

^    # start anchor

# precheck xx-xx-xxxx,... add new separators here
(?=\d{2}([-.,\/])\d{2}\1\d{4}$)

(?:  # day-check: non caturing group

  # days 01-28
  0[1-9]|1\d|[2][0-8]| 

  # february 29d check for leap year: all 4y / 00 years: only each 400
  # 0400,0800,1200,1600,2000,...
  29
  (?!.02. # not if feb: if not ...
    (?!
      # 00 years: exclude !0 %400 years
      (?!(?:[02468][1-35-79]|[13579][0-13-57-9])00)

      # 00,04,08,12,... 
      \d{2}(?:[02468][048]|[13579][26])
    )
  )|

  # d30 negative lookahead: february cannot have 30 days
  30(?!.02)|

  # d31 positive lookahead: month up to 31 days
  31(?=.(?:0[13578]|10|12))

) # eof day-check

# month 01-12
.(?:0[1-9]|1[012])

# year 0000-9999
.\d{4}

$ # end anchor

Ayrıca bkz. SO Regex SSS ; Başarısız olursa lütfen bana bildirin.


5

Bu reg'i burada buldum

^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$

Bu, biçimi mm/dd/yyyyve geçerli tarihleri ​​doğru bir şekilde doğrular (ancak doğrulamaz m/d/yyyy).

Bazı testler


1
Yalnızca 2014'ten önce çalışır, desteklemek için | 20 (0 [0-9] | 1 [0-4]))) | | 20 (0 [0-9] | 1 [0-9]))) olarak değiştirilmelidir. 2019
Tony Dong

5
"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((19|20)\\d\\d)$"

arasındaki herhangi bir tarihi doğrulayacak 1900-2099


5

Aşağıdaki ifade hoş ve kullanımı kolaydır:

((((0[13578]|1[02])(\/|-|.)(0[1-9]|1[0-9]|2[0-9]|3[01]))|((0[469]|11)(\/|-|.)(0[1-9]|1[0-9]|2[0-9]|3[0]))|((02)((\/|-|.)(0[1-9]|1[0-9]|2[0-8]))))(\/|-|.)(19([6-9][0-9])|20(0[0-9]|1[0-4])))|((02)(\/|-|.)(29)(\/|-|.)(19(6[048]|7[26]|8[048]|9[26])|20(0[048]|1[26])))

MM / gg / YYYY biçimine göre doğrular ve 1960 ile 2016 arasında artık yıl desteğine izin verir.

(19(6[048]|7[26]|8[048]|9[26])|20(0[048]|1[26]))

Umarım bu sana çok yardımcı olmuştur


3

Gregoryen'e göre güne (dd), aya (mm) ve yıla (yyyy) bağlı olarak (yani, artık yıllarda 29 Şubat'ı da geçer) doğrulayan ve 0001 ile 9999 (0000 arasında değişen yıllara izin veren) bir başka cevap takvim)

^(?:(?:(?:0[1-9]|[12]\d|3[01])/(?:0[13578]|1[02])|(?:0[1-9]|[12]\d|30)/(?:0[469]|11)|(?:0[1-9]|1\d|2[0-8])/02)/(?!0000)\d{4}|(?:(?:0[1-9]|[12]\d)/02/(?:(?!0000)(?:[02468][048]|[13579][26])00|(?!..00)\d{2}(?:[02468][048]|[13579][26]))))$

1

1

Yalnızca MM / DD / YYYY biçimini kabul eden bir API ile çalışıyorum . Ofir'in cevabının yanı sıra yıllarca sıçrayan başka bir yazı bulamadım , bu yüzden tweaked ve ihtiyaç duyabilecek herkes için burada yeniden gönderiyorum.

/^(?:(?:(?:0[13578]|1[02])(\/)31)\1|(?:(?:0[1,3-9]|1[0-2])(\/)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:02(\/)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/)(?:0[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/

0
((((0[13578]|1[02])\/(0[1-9]|1[0-9]|2[0-9]|3[01]))|((0[469]|11)\/(0[1-9]|1[0-9]|2[0-9]|3[0]))|((02)(\/(0[1-9]|1[0-9]|2[0-8]))))\/(19([6-9][0-9])|20([0-9][0-9])))|((02)\/(29)\/(19(6[048]|7[26]|8[048]|9[26])|20(0[048]|1[26]|2[048])))

doğrular MM/DD/YYYYile formatını 1960için2028

artık yıl desteğini uzatmanız gerekiyorsa,

19(6[048]|7[26]|8[048]|9[26])|20(0[048]|1[26]|2[048]|3[26]|4[048])))

bu da iş

^((((0[13578]|1[02])[/](0[1-9]|1[0-9]|2[0-9]|3[01]))|((0[469]|11)[/](0[1-9]|1[0-9]|2[0-9]|3[0]))|((02)([/](0[1-9]|1[0-9]|2[0-8]))))[/](19([6-9][0-9])|20([0-9][0-9])))|((02)[/](29)[/](19(6[048]|7[26]|8[048]|9[26])|20(0[048]|1[26]|2[048])))

çevrimiçi olarak kontrol etmek için biçimi mm-dd-yyyydeğiştirmektense değiştirebilirsiniz http://regexr.com/[/][-]


0

Tarih AA / GG / YYYY için kullanabilirsiniz

^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$

Uygun günleri ve güveleri doğrular.

Şuradan normal ifadenizi kontrol edebileceğinizi unutmayın:

regex101

hangi ben tavsiye :)

İyi eğlenceler!


0
^(((([13578]|0[13578]|1[02])[-](0[1-9]|[1-9]|1[0-9]|2[0-9]|3[01]))|(([469]|0[469]|11)[-]([1-9]|1[0-9]|2[0-9]|3[0]))|((2|02)([-](0[1-9]|1[0-9]|2[0-8]))))[-](19([6-9][0-9])|20([0-9][0-9])))|((02)[-](29)[-](19(6[048]|7[26]|8[048]|9[26])|20(0[048]|1[26]|2[048])))

bu normal ifade tarihleri ​​şu biçimde doğrulayacaktır:

12-30-2016 (aa-gg-yyyy) veya 12-3-2016 (aa-g-yyyy) veya 1-3-2016 (md-yyyy) veya 1-30-2016 (m-gg-yyyy)


0

Bunun soruya teğet cevabı biliyorum ama eğer niyeti söz konusu değildir 'nasıl bir tarih doğrularım?', O zaman neden bir dil olduğunu kullanıyorsanız programlama dili (tüm zor işleri yapmak icar deneyin Yapabilmek)?

örneğin php

$this_date_object = date_create($this_date);

if ($this_date_object == false )
    {

        // process the error

    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.