Turning gears are the logo of co-scripts

co-script için rss feed yapmaya çalışırken tarihin hatalı olduğu uyarısını şuradan validate ederken öğrendik efendim. Kendim yazmak yerine interneti taramaya başladım. Bu hem tembellik hemde başkaları nasıl yaklaşmış görmek için bir meraktı. Tarih tipi veriler ve işlemleri oldum olası beni korkutur. Her memleketin kendi tarih formatının olmasına bir de her kurumun kendi standartları eklenince çıldırmamak elde olmuyor. Nispeten eski bir standart olsa da rss feed'ler için zorunlu kılınan bu RFC 822 formatını kullanıyoruz. 

İnternetten ASP ile yapılmış en sade ve güzel kodu alıp kullandım. Türkçe sunucu kullanıldığında session.LCID değerini önce 1033 (İngiliz) yapıyoruz (gün ve ay kısaltmaları Türkçe çıkar yoksa). İşimiz bitince tekrar 1055 (Türkçe)'e çeviriyoruz. 

Kodu aldığım yer burası ve yazan yakışıklı uzmanımızın sayfası da burası. Bu arada LCID'ler arasında cirit atabilmek için sunucudan bu desteğin açılmış olması gerekebiliyormuş. Bizde gerekmedi ama varsayılanı Eng olan sunucularda olabilir!

RFC Standartları ile ilgili olarak  şuraya bakabilirsiniz. Feed Validation w3c sayfası için buraya bakabilirsiniz.

Şimdi kodlarımız:

Function return_RFC822_Date(myDate, offset)
'session.LCID = 1033
Dim myDay, myDays, myMonth, myYear
   Dim myHours, myMonths, mySeconds

   myDate = CDate(myDate)
   myDay = WeekdayName(Weekday(myDate),true)
   myDays = Day(myDate)
   myMonth = MonthName(Month(myDate), true)
   myYear = Year(myDate)
   myHours = zeroPad(Hour(myDate), 2)
   myMinutes = zeroPad(Minute(myDate), 2)
   mySeconds = zeroPad(Second(myDate), 2)

   return_RFC822_Date = myDay&", "& _
                                  myDays&" "& _
                                  myMonth&" "& _ 
                                  myYear&" "& _
                                  myHours&":"& _
                                  myMinutes&":"& _
                                  mySeconds&" "& _ 
                                  offset
'session.LCID = 1055
End Function 

Function zeroPad(m, t)
   zeroPad = String(t-Len(m),"0")&m
End Function

Kodların içindeki LCID değiştirmelerinin başına yorum işareti koydum onları kaldırırsanız çalışır. Eğer fonksiyon içinde sürekli değiştirmek istemezseniz -ki bu fonksiyonu sıklıkla rss için kullanacaksanız fonksiyonu çağırdığınız yerlerin başına ve sonuna koyarak bir kez LCID değiştirmiş olursunuz.

Fonksiyonun kullanımı:

 

response.write return_RFC822_Date(Now, "GMT")
'GMT yerine EST veya +0200 gelebilir
'Now yerine de herhangi bir tarih gelebilir, tarih formatında olmalı

 

Ya da isterseniz yorum tırnaklarını kaldırıp doğrudan kullanınız.

Kolay gelsin

co-scripts tag image rfc-822lcid10331055return_rfc822_dategmtestrssfeed
ID:156 | Okunma:1851